2016-10-03 86 views
0

我必须在我的块(文本文件)中显示所有记录,并进行拆分以“覆盖”字段分隔符,但只显示块的第一条记录。我究竟做错了什么?为什么我的方法不能读取我的所有文件? ... Java?

enter code here 
public static void listAllStudents() throws IOException { 

    File path = new File(Descriptor.getBlockPath()); 

    for (int i = 0; i < path.listFiles().length; i++) { 

     try { 
      FileInputStream file = new FileInputStream(Descriptor.getBlockPath() + "BLK" + i + ".txt"); 
      InputStreamReader entrada = new InputStreamReader(file); 
      BufferedReader buf= new BufferedReader(entrada); 
      String piece = " "; 

      System.out.println("\nBLOCO " + i + " ------------------------------------------------------ +"); 

      do { 


       if (buf.ready()) { 
        piece = buf.readLine(); 
        System.out.println("\n¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨"); 

        String string = " ", field[] = piece.split(Descriptor.getFieldSeparator()); 
        string = " "; 

        System.out.println("CPF: " + field[0]); 
        System.out.println("Name: " + field[1]); 
        System.out.println("Course: " + field[2]); 
        System.out.println("Age: " + field[3]); 
        System.out.println("Phone: " + field[4]); 
        System.out.println("Active: " + field[5]); 

        string = " "; 
       } 

      } while (buf.ready()); 

      buf.close(); 
     } catch (IOException e) { 
      System.out.println(); 
     } 
    } 

} 
+0

经典误用'ready()'。它不是在任何时间或地点对流结束进行有效的测试。 – EJP

回答

0

请参阅BufferedReader.readLine() method的文档:

或NULL,如果流的末尾已到达

然后改变你的代码逐行读取文件中的行:

while ((piece = buf.readLine()) != null) { 
    String field[] = piece.split(Descriptor.getFieldSeparator()); 

    if (field.length >= 6) { 
       System.out.println("CPF: " + field[0]); 
       System.out.println("Name: " + field[1]); 
       System.out.println("Course: " + field[2]); 
       System.out.println("Age: " + field[3]); 
       System.out.println("Phone: " + field[4]); 
       System.out.println("Active: " + field[5]); 
    } 
} 
+0

那么'#ready()'不能告诉结束已经到达了? – Tom

+0

不,请阅读https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#ready() –

+0

和http://stackoverflow.com/a/5244928/2310289 –

相关问题