Senhores estou com um dilema de iniciante em java: Preciso ler um arquivo e gravar outro a partir dele com algumas modificações. Estou conseguindo ler e até gravar o segundo, só que com um pequeno problema: O segundo não grava todas as linhas. Ex: o original tem 149563 linhas mas o segundo só tem gravadas 149521 linhas. Há um limite de linhas para PrintWriter ou está ocorrendo alguma exeçao que não estou pegando ?
segue cópia do código que estou usando:
import java.io.;
import java.awt.;
import java.awt.event.;
import javax.swing.;
public class ArquivoEntSai
{
private static JFFile jFFile;
public static void main (String[] args)
{
// Open Input File
jFFile = new JFFile();
String inputFile[] = jFFile.open();
System.out.println(inputFile[1]);
if (inputFile[0].equals(" "))
{
System.out.println(“Nenhum arquivo aberto!!!”);
System.exit(0);
}
// Output text file (for errors and messages)
PrintWriter pw = null;
String fw = “Gerado.”+inputFile[2].trim();
try
{
pw = new PrintWriter(new FileWriter(fw));
}
catch (IOException e)
{
System.err.println("Caught IOException: " +
e.getMessage());
}
System.out.println("Arquivo Gerado: " + fw);
/** comentada para nao interferir nos dados dos arquivos
pw.println("Coloque cabeçalho aqui, se tiver");
pw.println("================================");
*/
try
{
// open text file
BufferedReader in = new BufferedReader(new FileReader(inputFile[0]));
// read and process a line
String line = in.readLine();
System.out.println("Início processo do arquivo " + inputFile[0]);
int qtdeLi = 0;
while(line != null)
{
//Processa linha
qtdeLi += 1;
//Process line
/**
String codigo = (line.substring( 0, 8));
String nome = (line.substring( 9, 29));
String data1 = (line.substring( 31, 39));
String data2 = (line.substring( 40, 49));
*/
String parte1 = (line.substring( 0, 37 ));
String parte2 = (line.substring( 38, 40 ));
String parte3 = (line.substring( 40, 126));
// Monta Saida
String output ="";
output = parte1;
output += parte2;
output += parte3;
/**
output = codigo;
output += " | ";
output += nome;
output += " | ";
output += data1;
output += " | ";
output += data2;
*/
// Grava Saida
pw.println(output);
// System.out.println("linha " + output );
// Prepara para processar proxima linha
line = in.readLine();
}
in.close();
/**
pw.println("==================================");
pw.println("Coloque rodapé aqui, se necessário");
pw.close();
*/
System.out.println("Fim do processo do arquivo " + inputFile[0]);
System.exit(0);
}
catch( Exception e)
{
e.printStackTrace();
}
}
}
class JFFile extends JFrame implements ActionListener
{
//=======================================================================\
// Open File Function using FileDialog
// Return a String vector with:
// [0] = complete file name (file name and his directory(path))
// [1] = directory path only
// [2] = file name only
public String[] open()
{
FileDialog fAbrir;
fAbrir = new FileDialog(this,“Abrir arquivo”,FileDialog.LOAD);
fAbrir.setVisible(true);
if (fAbrir.getFile()==null)
{
String oFile[] = {" “,” “,” "};
return (oFile);
}
String file = (fAbrir.getDirectory()+fAbrir.getFile());
String dir = (fAbrir.getDirectory());
String name = (fAbrir.getFile());
String oFile[] = {file, dir, name};
return(oFile);
}
//=======================================================================\
public void actionPerformed(ActionEvent e)
{
}
//=======================================================================\
}
Desde já agradeço a atenção dispensada.
:shock: