【发布时间】:2016-06-26 14:27:40
【问题描述】:
以下程序从文件中读取并写入输出文件 .这工作得很好,但我想知道为什么它工作正常。不应该在文件末尾添加一个 extraLine 吗?但是为什么它工作正常。请解释它的行为
输入文件:
abcdefg
定义
输入是 newline + abcdefg +newline+def 就是这样! 根据代码,它应该在最后添加一个额外的行,但它工作正常。
try (
BufferedReader bufferedReader = new BufferedReader(
new FileReader(new File("/home/admins/Desktop/Sources/src/input.txt")));
BufferedWriter bufferedWriter = new BufferedWriter(
new FileWriter(new File("/home/admins/Desktop/Sources/src/output.txt")))) {
String c = bufferedReader.readLine();
while (c != null) {
bufferedWriter.write(c+"\n");
c=bufferedReader.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
【问题讨论】:
-
为什么 会呢?你每次调用
readLine写一行。 -
bufferedReader.readLine();只会给出没有 \n 的字符串,然后我添加新行以将其写入文件。但是对于最后一行,它不应该再添加一行吗?
-
确保使用
hexedit之类的工具逐字节查看输出文件的内容,以查看实际存在的内容。使用编写的代码,我希望看到从输入中读取的每一行,然后是换行符。 (但是,如果 as-read 字符串已经包含换行符怎么办?)因此,解决问题的最快方法是使用这样的工具,它会向您显示“不可见”字节。
标签: java bufferedreader