3

我有一个调用 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 个垃圾字符。我还检查了程序中的其他几个文件,除了它是使用运行时函数创建的事实之外,没有文件有这个问题。
9087.
如您所见,输出文件中出现了三个垃圾字符。使用记事本++ 打开时,我看不到那些垃圾字符。

请建议

4

3 回答 3

6

发生这种情况是因为您在创建 FileInputStream 时没有提到文件编码。假设您的文件是 UTF-8 编码的,您需要做这样的事情

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

根据文件的编码更改编码

于 2013-07-09T04:43:41.037 回答
5

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

于 2013-07-09T04:43:59.407 回答
1

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

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

String str;

while ((str = in.readLine()) != null) {
  System.out.println(str);
}
于 2013-07-09T04:45:49.693 回答