Manipulacao maluca

3 respostas
W

1 Abro um arquivo
2 mando linha por linha para uma funcao essa funcao pro sua vez pega uma string existente e troca por outra ambas escolhidas pelo usuario.
3 joga linha linha fazendo as alteraçoes no mesmo arquivo que originou as strings (nao to conseguindo gravar o arquivo de volta)

public static void grava(String linhaArquivo) {
	try {
			String velha = new String("l");
			String nova = new String("lin");
			String modificada = linhaArquivo.replaceAll("^"+velha+"$", nova);
			BufferedWriter out = new BufferedWriter(new FileWriter("/home/testegrava.txt"));
			String linha = new String();
			while ((linha = modificada) != null){
			out.write(modificada);
			}
			out.close();
			} catch (IOException e) {
		}
	}

Obrigado desde ja

3 Respostas

Rafael_Steil

Voce nao pode ler um arquivo e gravar ele ao mesmo tempo… Voce pode ler tudo em memoria ( argh ), fechar o arquivo, e entao abrir ele em modo leitura, procesando os dados lidos anteriormente e regravando; ou pode ir lendo aos poucos, gravando em um arquivo temporario e, no final, renomear.

Rafael

louds

Use um arquivo temporario e no final do processamento substitua o original pelo novo.

W

ja que nao tem como gravar no mesmo como jogar o conteudo da variavel abaixo em um arquivo testegravaTMP.txt lembrando que o arquivo e lido em outra funcao que manda linha por linha para ela e o arquivo e gigante nao podendo ler tudo em memoria ( certo )

"String modificada = linhaArquivo.replaceAll("^"+velha+"$", nova);"

nao estou conseguindo fazer com while

Criado 13 de dezembro de 2003
Ultima resposta 13 de dez. de 2003
Respostas 3
Participantes 3