【发布时间】:2020-03-03 11:07:15
【问题描述】:
我尝试使用 Java BufferedReader 读取一个空的 txt 文件。
这是我的代码:
File recentFile = new File(path);
try {
BufferedReader reader = new BufferedReader(newInputStreamReader(newFileInputStream(recentFile), "UTF-8"));
String temp = reader.readLine();
reader.close();
if (temp == null) {System.out.println("your file is empty");}
else {System.out.println(temp);}
} catch (IOException ex) {}
txt文件完全是空的,但是当我运行程序时,命令提示符会打印出“?”而不是“你的文件是空的”。
当我将“UTF-8”更改为“Unicode”,并将我的 txt 文件编码格式更改为 Unicode 时,我从提示中得到“您的文件为空”。
为什么我在使用 UTF-8 时会得到这个结果?
顺便说一句,如果这是重复的,请告诉我,我试图在谷歌上搜索多次,但找不到任何对我有帮助的东西。
【问题讨论】:
-
... else if(temp.isEmpty()) { System.out.println("your file is empty");} else ..;) String#isEmpty() -
对不起,我仍然得到相同的结果。
-
..我假设你在 Windows 机器上,并且可能有这个“nasty-windows-BOM-UTF-8”?
-
你确定文件真的是空的吗?它的大小(以字节为单位)是多少?尝试使用十六进制编辑器查看其内容编辑:查看之前的评论(如果
temp不是null,则将其内容打印为十六进制(或字节))
标签: java utf-8 bufferedreader