Primeiramente, vou explicar o que quero fazer. (Sou iniciante MESMO, portanto não esperem muito)
Tenho uma arquivo de texto que não tem delimitador, e quero ler esse texto, separar por colunas para inserir no banco de dados.
Como o SQL Server 2005 disponibiliza apenas o ‘BULK INSERT’, tenho que separar essas colunas com delimitadores (no meu caso “;” ).
Já consegui ler e mostrar na tela o arquivo que tenho, já transformado.
Porém quando vou criar o novo .txt ele copia apenas a primeira linha e dá o erro ‘Stream Closed’
Obs. 1: Trecho do arquivo ORIGEM
0000008263211220100650012117130501
0000008273211220100701012311054637
0000008283211220100810012975014424
0000008293211220100829018111039528
0000008303211220101017013707353426
Obs. 2: Como o novo txt vai ficar
000000826;3;21122010;0650;0;12117130501;
000000827;3;21122010;0701;0;12311054637;
000000828;3;21122010;0810;0;12975014424;
000000829;3;21122010;0829;0;18111039528;
000000830;3;21122010;1017;0;13707353426;
Obs. 3: A IDE utilizada está sendo o BlueJ
Segue o código:
import java.io.*;
import javax.swing.*;
public class Gravar {
public void Gravar(String batidas_novas){
String conteudo = batidas_novas;
int i=0;
try{
// o true significa q o arquivo será constante
FileWriter x = new FileWriter("D:\batidas_novas.txt",true);
FileReader fr = new FileReader("C:\batidas.txt"); // Local do Arquivo
BufferedReader br = new BufferedReader(fr); // Alterando da variável fr para br
for ( i=0;i<9999;i++) {
String s = br.readLine(); // variavel para receber o relatorio do ponto
while ((s = br.readLine()) != null) {
if (s.charAt(9) == '3') { // faz a comparação, se o indice 9 for igual a 3 ele faz isso ai em baixo
System.out.println(s.substring(0,9)+ ";"+s.substring(9,10)+";"+s.substring(10, 18) + ";" + s.substring(18,19)+s.substring(19, 22) + ";"+s.substring(22,23)+";"+s.substring(23)+";");
conteudo += "\n"; // criando nova linha e recuo no arquivo
x.write(s.substring(0,9)+ ";"+s.substring(9,10)+";"+s.substring(10, 18) + ";" + s.substring(18,19)+s.substring(19, 22) + ";"+s.substring(22,23)+";"+s.substring(23)+";"); // armazena o texto no objeto x, que aponta para o arquivo
x.close(); // cria o arquivo
JOptionPane.showMessageDialog(null,"Arquivo gravado com sucesso","Concluído",JOptionPane.INFORMATION_MESSAGE);
br.close();
}
}
}
}
// em caso de erro apreenta mensagem abaixo
catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage(),"Atenção",JOptionPane.WARNING_MESSAGE);
}
}
}
Obrigado desde já pela ajuda.