我的程序应该读取整个文件,它可以工作,但是当我将其输出到控制台时,开头会有一些奇怪的字符:
try {
String name = null;
JFileChooser fc = new JFileChooser();
int approve = fc.showOpenDialog(null);
if (approve == JFileChooser.APPROVE_OPTION) {
name = fc.getSelectedFile().getAbsolutePath().toString();
}
File file = new File(name);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
StringBuilder sb = new StringBuilder();
String data;
while ((data = br.readLine()) != null) {
sb.append(data).append(" ");
}
br.close();
String readFile = sb.toString();
System.out.println(readFile);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error occured", "Error", JOptionPane.ERROR_MESSAGE);
}
控制台输出如下:
test 01.01.2018 tets test 12.03.2019
现在在我选择的文件(html文件)中,没有字符
,所以它们从何而来?
答案 0 :(得分:0)
您的文件以UTF-8 BOM(字节顺序标记)开头。
正如您在this Wikipedia page上看到的那样,BOM看起来与您使用非UTF-8编码(例如Windows-1252或ISO-8851-1)读取文件时所描述的完全相同。
更改代码以使用UTF-8读取文件,或将文件更改为不以UTF-8写入。
如果坚持使用UTF-8,请注意Java本身不支持UTF-8 BOM,因此您必须检查并自行删除。更好的是,将创建文件的代码更改为不编写BOM。某些文本编辑器可能会创建一个,但通常可以将其配置为不创建。
您还可以使用某些文本编辑器删除BOM表和/或更改编码,例如Notepad ++可以做到。