为什么我的方法不能读取我的所有文件? ...... Java?

时间:2016-10-03 01:07:02

标签: java file split

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

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();
        }
    }

}

1 个答案:

答案 0 :(得分: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]);
     }
}