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);
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.
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).