为什么我的Java BufferedReader在文件的开始和结束时读取空值?

L33*_*EAN 3 java bufferedreader

我无法查看下面的代码有什么问题.没有任何输出时输出空值.

输出: null This is one. This is two. This is three. This is four five six. seven? null

文件内容:

This is one.
This is two.
This is three.
This is four
five
six.
seven?
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激!

try (BufferedReader br = new BufferedReader(new FileReader(filename))) {

    String cLine="";
    while ((cLine = br.readLine()) != null) {
        content+= cLine;

    }
} catch (IOException e) {
    e.printStackTrace();
}

System.out.println(content);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

我怀疑content开头是空(而不是空),这解释了第一个null.它没有解释最后一个,不可否认......我的猜测是你实际修复了一个bug,因为你最后看到了输出null.如果不是这样,您的文件实际上已经null在最后.(我已将其content初始化为"" 进行测试,并且没问题.)

您是否意识到您正在删除所有换行符,而不是用任何类型的分隔符替换它们?因此,具有"x","y"和"z"行的文件将变为"xyz".

另外,考虑使用StringBuilder而不是字符串连接 - 它将更有效,因为它不需要一直复制字符串.