Atualizar um Arquivo

Tenho que fazer um programinha que fazer uma mesma substituição em todos os arquivos de um diretorio. Já estou conseguindo listar os arquivos, ler cada linha fazendo a comparação com a string que devo substituir. Só não sei como atualizar o arquivo. Alguem tem alguma ideia de como fazer isso?

  1. Leia o arquivo, jogando os dados num buffer.
  2. Fecha o arquivo.
  3. Faz as substituições.
  4. Abre o arquivo para gravação.
  5. Grava os dados do buffer.
  6. Fecha o arquivo.
  7. Dá uma olhada se funcionou.
  8. Se não, arruma e teste.
  9. Verifica de novo!
    10 ) Funcionou! Fique feliz. :smiley:

E pague uma cerveja pro Daniel! :wink:

[size=“7”]E, Daniel, se ele pagar, a gente toma ela junto, pq afinal, a idéia foi minha…[/size]

Caio, na real, vc me deve uma cerveja. Terça que vem estarei em Mococa.
Ooops, vc está em Campinas, né? Furou! :?

[quote=“danieldestro”]Caio, na real, vc me deve uma cerveja. Terça que vem estarei em Mococa.
Ooops, vc está em Campinas, né? Furou! :?[/quote]

Se vc quiser passar por São João, tou por lá a noite… Qualquer coisa, a gente se fala via MSN. :wink:

[]'s

Consegui fazer. A classe ficou assim:

import java.io.*;



public class Alterar{
    
    private static String Origem;

	public static void setPath(String Ori){
		Origem = Ori;

	}



	public static void AlterFile(String find, String replace){
		
		
		File dirAtual = new File(Origem); // Cria o diretorio apontando pra origem dos arquivos
		String listaArquivos[] = dirAtual.list();  // Lista os arquivos do diretorio

		
		System.out.println("Diretorio de Origem - " + Origem);
		
		for (int i = 0; i < listaArquivos.length; i++)
		{
			int flag = 0; // indica que o arquivo não foi modificado
			
			File arquivoAtual = new File(Origem + "\"+ listaArquivos[i]);
			if (arquivoAtual.isDirectory()) {continue;}
			
			File novoArquivo = new File(Origem + "\"+ "temp.txt");
			System.out.print("Nome do Arquivo - " + listaArquivos[i]);
			try {
				BufferedReader in = new BufferedReader(new FileReader(arquivoAtual));
				BufferedWriter out = new BufferedWriter(new FileWriter(novoArquivo));
				String str;
												
				while ((str = in.readLine()) != null) {
					/*int idx = str.indexOf(find);    
					if ( idx > 0 ) {      
					  str = str.substring( 0, idx ) + replace + str.substring( idx+=find.length(), str.length  () ); 
					} */   
				   while(str.indexOf(find) != -1){
						flag = 1; // Arquivo modificado
						int idx = str.indexOf(find);
						str = str.substring( 0, idx ) + replace + str.substring( idx+=find.length(), str.length  () );
				   }
				    
				   out.write(str);
				   out.newLine();
					
				}
				System.out.println((flag == 1)? " - modificado" : " - não modificado");
						
				
					in.close();
					out.close();
				} catch (IOException e) {
				}
			arquivoAtual.delete();
			novoArquivo.renameTo(arquivoAtual);
		}



	}

    public static void main(String args[])
    {

	setPath("C:\atual");
	AlterFile(" - Estes dados estão sujeitos a alteração","");
        
    }
}