文件读取器库输出null

时间:2014-12-13 19:40:56

标签: java io bufferedreader

因为每次创建项目时我都懒得重写文件管理器,所以我正在创建一个文件IO库。当我运行它时,我得到:

null
null
null

它查找文件中有多少行,但将它们全部置为空。我该如何解决这个问题?

档案管理员:

package textfiles;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;

public class KezelFile {

    private String path;
    BufferedReader buff;

    public KezelFile(String filePath) throws IOException {
        path = filePath;
        openFile();
    }

    public void openFile() throws IOException {
        FileReader read = new FileReader(path);
        buff = new BufferedReader(read);
    }

    public String[] toStringArray() throws IOException {

        int numberOfLines = readLines();
        String[] textData = new String[numberOfLines];

        int i;

        for (i=0; i < numberOfLines; i++) {
        textData[i] = buff.readLine();

        }
        return textData;
    }

    int readLines() throws IOException {

        String lines;
        int noLines = 0;

        while ((lines = buff.readLine()) != null) {
            noLines++;
        }

        return noLines;
    }

    public void closeFile() throws IOException {
        buff.close();
    }

}

主要课程:

package textfiles;
import java.io.IOException;

public class FileData {

    public static void main(String[] args) throws IOException {

        String filePath = "C:/test.txt";

        try {
            KezelFile file = new KezelFile(filePath);
            String[] aryLines = file.toStringArray();

            int i;
            for (i=0; i < aryLines.length; i++) {
            System.out.println(aryLines[i]);
            }
            file.closeFile();
        }

        catch (IOException error){
            System.out.println(error.getMessage());
        }

    }

}

1 个答案:

答案 0 :(得分:0)

读完所有行后,再次读取这些行,直到再次打开文件为止。仅仅因为readLine()是从不同的方法调用的,它不会重置&#34;重置&#34;读者。

更好的解决方案是只读取一次文件。我建议您将这些行读成List<String>,或者在阅读时更好地处理该文件,并且您也不需要该文件。

BTW在Java 8中你可以写

Files.lines(filename).forEach(System.out::println);

也许是时候尝试Java8了;)