在java中读取文本文件时的垃圾字符

时间:2013-07-09 04:39:46

标签: java

我有一个调用windows bat文件的java,它执行一些处理并生成输出文件 Process p = Runtime.getRuntime().exec("cmd /c "+filename);
现在从以下程序中读取文件。 (filexists()是检查文件是否存在的函数)。输出文件仅包含单行

if ( filexists("output.txt") == true)    
{   String FileLine; 
    FileInputStream fstream = new FileInputStream("output.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

    FileLine = br.readLine();
    fstream.close();
    filein.close();

}

变量FileLine在起始时包含3个垃圾字符。我还检查了progam中的其他几个文件,没有文件有这个问题,除了它是用Runtime函数创建的事实 9087
正如您所看到的那样,输出文件中会出现三个垃圾字符。使用Notepad ++打开时,我无法看到那些垃圾字符。

请建议

3 个答案:

答案 0 :(得分:6)

这种情况正在发生,因为您在创建FileInputStream时没有提到文件编码。假设您的文件是UTF-8编码的,您需要执行类似的操作

   new FileInputStream("output.txt, "UTF-8"));

根据文件的编码更改编码

答案 1 :(得分:5)

这看起来像UTF-8编码的字节顺序标记。见https://en.wikipedia.org/wiki/Byte_order_mark

答案 2 :(得分:1)

可能是文件编码的问题。虽然我不确定。 你可以试试下面一段代码,看看它是否适合你

BufferedReader in = new BufferedReader(
new InputStreamReader( new FileInputStream("output.txt"), "UTF8"));

String str;

while ((str = in.readLine()) != null) {
  System.out.println(str);
}