我无法查看下面的代码有什么问题。当没有任何内容时输出空值。
输出: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?
对此的任何帮助将不胜感激!
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);
答案 0 :(得分:7)
我怀疑content
是空的,而不是空的,这解释了第一个null
。它没有解释最后一个,不可否认......我的猜测是你实际修复了一个错误,因为你最后看到null
的输出。这个或您的文件实际上最后都有null
。 (我已经将content
初始化为“”进行了测试,这很好。)
你是否意识到你正在删除所有换行符,而不是用任何类型的分隔符替换它们?因此,带有“x”,“y”和“z”行的文件将变为“xyz”。
此外,考虑使用StringBuilder
而不是字符串连接 - 它会更有效率,因为它不需要一直复制字符串。
答案 1 :(得分:0)
只是评论......
我不知道这种语法的尝试。最初我认为这是一个错字,但我发现它确实有效(我编译并运行代码)。
我认为它总是: 尝试{ .... .... .... } catch(){}
进一步阅读,发现这是Java 7的一个新功能,“试用资源”(来自Special syntax of java try catch block)
答案 2 :(得分:-2)
如果您从Java开始我建议更简单...就像在文件上使用扫描仪一样。请考虑以下事项:
Scanner fileRead = new Scanner(fileName);
while ( fileRead.hasNextLine() ) {
System.out.println( fileRead.nextLine() );
}
反正我的建议。