Dúvida substituir String em arquivo de txt

6 respostas
N

Pessoal estou montando um código, onde eu devo ler um arquivo .txt e mudar algumas Strings nele.

Ex: assim eu leio o arquivo e onde estiver escrito “teste” eu quero q mude para “teste 2”… até ai está td ok, eu uso um Pattern q busca essa String e mudo ela com um replaceAll, o problema é q, ele não substitue no local certo onde está a primeira String “teste”, ele grava no final do arquivo a String “teste 2”…

Alguem conhece alguma forma de fazer isso, ou se é possivel… segue meu código

BufferedReader leitorDestino = new BufferedReader(new FileReader(destinoFile));
			
FileWriter writer = new FileWriter(destino,true);
			
while((linhaDestino = leitorDestino.readLine()) != null) {
				
Pattern pega = Pattern.compile("teste");
Matcher m = pega.matcher(linhaDestino);
	
if(m.find()){

PrintWriter saida = new PrintWriter(writer);
					
String valor = m.group();

String end = linhaDestino.replaceAll("teste","teste 2");
saida.write(end);

Aguardo por ajuda Pessoal

6 Respostas

T

Eu usaria um programa como o “sed” ou o “awk” para fazer esse tipo de alterações :stuck_out_tongue:

N

Vc poderia me passar alguma referencia??

Obrigado pela ajuda…

T

No seu caso o problema é relativamente simples, e você está “quase” no caminho certo.
Só que você não pode fazer como você tentou fazer (usar o mesmo arquivo para entrada e saída) - no mínimo você iria “estragar” o arquivo).
Isso não pode ser feito para arquivos-texto.
Você pode criar um arquivo temporário para saída, e depois copiar o arquivo sobre o arquivo de entrada, se tudo der certo.

N

Foi isso q eu fiz… mas oq eu queria mesmo era apenas substituir uma string e não refazer o arquivo mudando apenas uma linha…

T

Você só pode escrever coisas no fim de um arquivo texto, ou então, se for abrir o arquivo como um arquivo binário, só pode substituir por dados que tenham exatamente o mesmo tamanho. Não é possível fazer isso que você quer (aumentar o tamanho do arquivo escrevendo no meio). Você tem de fazer como fez antes (criar um novo arquivo, só para substituir uma ou duas linhas).

N

Ok… entendi…

Valeu thingol…

Obrigado pela ajuda cara…

Abs

Criado 31 de maio de 2007
Ultima resposta 31 de mai. de 2007
Respostas 6
Participantes 2