Tenho um arquivo txt tabulado com posições iniciais e finais. Entretanto, não estou conseguindo utilizar replace para substituir a posicao desejada.
Estou utilizando o seguinte código:
import java.io.*;
import javax.swing.JOptionPane;
public class TesteQuatro {
//verifica se o arquivo que foi digitado pelo JOptionPane existe!
public static void lerArquivo(String arquivo){
File f = new File(arquivo);
if (!f.exists()){
System.out.println("Arquivo " + arquivo + " não existe!");
return;
}
try{
InputStream is = new FileInputStream(arquivo);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
//verifica todas as linhas do txt e aplica o código abaixo
while (s != null){
s = br.readLine();
s += s.substring(18, 20).replace("03", "##");
System.out.println(s);
}
}catch(Exception x){
System.out.println(x.getMessage());
}
}
//starta a aplicao
public static void main(String[] args) {
lerArquivo(JOptionPane.showInputDialog(null, "Digite o diretório"));
}
}
O TXT possui a seguinte aparência:
01010000041000999003AAA
01010000168000999003BBB
01011000071000499003CCC
01011000234000399003DDD
01011000067000120003EEE
01011000068000160003FFF
01011000204001490003GGG
.
.
.
Porém após a execução do código o “##” vai para o final, ficando da seguinte maneira:
01010000041000999003AAA ##
01010000168000999003BBB ##
01011000071000499003CCC ##
01011000234000399003DDD ##
01011000067000120003EEE ##
01011000068000160003FFF ##
01011000204001490003GGG ##
.
.
.
O objetivo seria este:
010100000410009990##AAA
010100001680009990##BBB
010110000710004990##CCC
010110002340003990##DDD
010110000670001200##EEE
010110000680001600##FFF
010110002040014900##GGG
.
.
.
Como eu poderia aprimorar meu código?