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?
- Leia o arquivo, jogando os dados num buffer.
- Fecha o arquivo.
- Faz as substituições.
- Abre o arquivo para gravação.
- Grava os dados do buffer.
- Fecha o arquivo.
- Dá uma olhada se funcionou.
- Se não, arruma e teste.
- Verifica de novo!
10 ) Funcionou! Fique feliz.
E pague uma cerveja pro Daniel!
[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.
[]'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","");
}
}