我正在尝试将文本从文本文件放到表格中,我希望它在按下按钮时显示在表格上。它不会显示任何错误,它只是不起作用。有人可以解释为什么以及如何使其工作。案文分为;
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
int v =0;
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
Object[] row = new String[v];
do{
r = br.readLine();
if(r!=null){
for (int i = 0; i < v; i++) {
int ix = r.indexOf(";");
row[i] = r.substring(0, ix);
r = r.substring(ix+1);
int zn = r.indexOf(";");
row[i] += r.substring(0, zn);
r = r.substring(zn+1);
int xn = r.indexOf(";");
row[i] += r.substring(0, xn);
r = r.substring(xn+1);
int an = r.indexOf(";");
row[i] += r.substring(0, an);
table.addRow(row);
}
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
答案 0 :(得分:0)
您计算文件中的行数
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
之后,在尝试到达EOF后,尝试从文件中读取
do{
r = br.readLine();
if(r!=null){
[...]
}
}while(r!=null);
r = br.readLine();
将返回null
,因为已达到EOF,并跳过循环
要解决此问题,您可以重新打开文件
//counting code
br.close();
br = new BufferedReader([...]);
//reading code
或者您可以将行添加到List
,然后使用
BufferedReader br = new BufferedReader([...]);
List<String> lines = new ArrayList<String>();
for(String line = br.readLine(); line != null; line = br.readLine())
lines.add(line);
String[] row = lines.toArray(new String[0]);
如果您只是将值添加到表中,则根本不能存储文件可能更容易
BufferedReader br = new BufferedReader([...]);
for(String line = br.readLine(); line != null; line = br.readLine())
table.addRow(line.split(";"));
答案 1 :(得分:0)
你应该缩短它。
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
do{
r = br.readLine();
if(r!=null){
String [] sline=r.split(";");
table.addRow(sline);
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
原因:您读取文件2次但未重置流。为什么?
然后你计算了行数并将这个数字作为列数,为什么?