【问题标题】:Java: exception reading a file into a stringJava:将文件读入字符串的异常
【发布时间】:2012-11-19 02:31:29
【问题描述】:
static void parse(String fileName) throws IOException{
    FileReader fileReader=new FileReader((fileName));
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    StringBuilder stringBuilder=new StringBuilder();
    String string;
    do{
        string=bufferedReader.readLine();
        stringBuilder.append(string);
        }while(!string.equals(null));
    System.out.println(stringBuilder.toString());


}

我尝试使用 StringBuilder 将整个文件读取为字符串。但是我在while循环中出错。为什么?

【问题讨论】:

  • 啊...旧的equals(null) 问题。想想equals(null) 的真正含义! :-)
  • (这个问题不是(x).equals(null) - 尽管是一个无用的结构 - 就像(null).equals(x) ..)

标签: java readline


【解决方案1】:

以下是你的循环应该是什么样子的

while((string = bufferedReader.readLine()) != null) {                
    stringBuilder.append(string);
}

您的版本的问题是string.equals(null) 最终会出现在 NPE 中。另请注意,String.equals() 将始终为 null 参数返回 false。

【讨论】:

  • 最初编写的代码的另一个问题是stringBuilder.append(null) 将附加字符串"null"
  • 当没有更多行可读取时,bufferedReader.readLine() 返回 null,因此您将在 string.equals(null) 处获得 NullPointerException。所以应用程序在那个时候终止,而不是循环。
【解决方案2】:

问题出在

string.equals(null)

如果 string 为 null,则不能对其调用 equals 方法。

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多