O meu programa lê os arquivos de um diretório e passa as informações através de splits para dentro da jtable. O problema é que só está passando as informações do primeiro arquivo que está na pasta e os outros ele somente lê e não passa para a jtable. O que posso estar fazendo errado?
Sem postar o código das classes, fica difícil adivinhar.
Segue o código…
public void populaTabela() {
try {
File arquivos[];
File diretorio = new File(“C:\Users\User\Desktop”);
// lista somente arquivos TXT
arquivos = diretorio.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".txt");
}
});
String linha = "";
String col1 = "";
String col2 = "";
String col3 = "";
String col4 = "";
String exercicio[] = new String[200];
int indice = 0;
int nrErros = 0;
if (diretorio.isDirectory()) {
arquivos = diretorio.listFiles();
for (File arquivo : arquivos) {
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\" + arquivo.getName()));
DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
modelo.setNumRows(0);
jTable1.setModel(modelo);
while ((linha = reader.readLine()) != null) {
switch (indice) {
case 0:
col1 = linha.split("\\:")[1];
break;
case 1:
col2 = linha.split("\\:")[1];
break;
case 2:
col3 = linha.split("\\:")[1];
break;
case 3:
col4 = linha.split("\\:")[1];
break;
default:
System.out.println(linha);
break;
}
indice++;
}
linha = col1 + ":" + col2 + ":" + col3 + ":" + col4;
modelo.addRow(linha.split("\\:"));
}
}
} catch (IOException e) {
}
}
Sem saber o formato do arquivo e sem ver o código completo, fica mais difícil entender sua necessidade.
Mas acredito que o código abaixo esteja mais próximo do que você procura:
private static final FileFilter SOMENTE_TXT = new FileFilter() {
public boolean accept(File file) {
return file.getName().toLowerCase().endsWith(".txt");
}
};
public void populaTabela() {
try {
DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
modelo.setNumRows(0);
File diretorio = new File("C:\\Users\\User\\Desktop");
if (diretorio.isDirectory()) {
File[] arquivos = diretorio.listFiles(SOMENTE_TXT);
for (File arquivo : arquivos) {
BufferedReader reader = new BufferedReader(new FileReader(arquivo));
String linha = null;
while ((linha = reader.readLine()) != null) {
String[] colunas = linha.split("\\:");
modelo.addRow(colunas);
}
reader.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
Sim, o problema era que isto aqui:
modelo = (DefaultTableModel) jTable1.getModel();
Tinha que estar fora do laço for, eu estava fazendo de forma local e não global, ficava sempre pegando um dos arquivos. Além disso isso aqui modelo.addRow(colunas); para a quantidade de incrementos do for, eu não estava fazendo!
Obrigado pela ajuda! Resolvido!
1 curtida