2016-10-02 59 views
2
public void readFile() throws IOException 
{ 
    try (BufferedReader reader = new BufferedReader(new FileReader("Data.txt"))) { 
    String line; 
    while ((line = reader.readLine()) != null) { 
     System.out.println(line); 
     DefaultTableModel model = (DefaultTableModel) pracListTeacherTable.getModel(); 
     model.addRow(new Object[]{line, line}); 

} 

嘿大家。我有这段代码基本上从名为Data.txt的文件中读取。我想要的是每两行文本文件在表格上创建一行,但正如您所看到的,我使用的是model.addRow(new Object[]{line, line});,它对同一行的两个单元格使用相同的行。Java - 需要文件读取帮助

我需要一些方法来存储上一行,所以我可以有像model.addRow(new Object[]{line, nextline});但我不知道如何做到这一点!

如果任何人都可以帮助我,这将是惊人的。

更新:感谢shaoyihe得到它的工作!

public void readFile() throws IOException { 
    try (BufferedReader reader = new BufferedReader(new FileReader("Data.txt"))) { 
    String line1, line2; 
    while ((line1 = reader.readLine()) != null && (line2 = reader.readLine()) != null) { 
     DefaultTableModel model = (DefaultTableModel) pracListTeacherTable.getModel(); 
     model.addRow(new Object[]{line1,line2}); 
    }   
} 
+0

好,所以你有当前行,只是简单地将上一行保存在'String prevLine;'中,你应该很好...... – 3kings

回答

0

如何在每个循环中读取两行?

String line1, line2; 
while ((line1 = reader.readLine()) != null && (line2 = reader.readLine()) != null) { 
//model.addRow(new Object[]{line1, line2}); 
} 

// for odd line 
if (line1 != null) { 

} 
+0

非常感谢!我会尝试一下并用我的更新代码回复你。 – Miyazero

0

这应做到:

public void readFile() throws IOException 
{ 
    try (BufferedReader reader = new BufferedReader(new FileReader("Data.txt"))) { 
    String line; 
    String [] lines = new String[2]; 
    int nextLine = 0; 
    while ((line = reader.readLine()) != null) { 
     System.out.println(line); 
     lines[nextLine++] = line; 
     // check if we're at the second line 
     if (nextLine == 2) { 
      DefaultTableModel model = (DefaultTableModel) pracListTeacherTable.getModel(); 
      model.addRow(lines); 
      nextLine = 0; 
     } 
    } 
    if (nextLine == 1) { 
     // odd number of lines in file (error?) 
     // lines[0] contains the odd (last) line 
     // lines[1] contains the previous line (last of the previous pair) 
    } 
} 

会是有意义的循环之前,一旦检索模式?或者getModel()在每次通话中返回不同的模型?