2013-07-09 60 views
2

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

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个垃圾charcters。我还检查了程序中的其他几个文件,除了使用Runtime函数创建的文件外,没有文件存在此问题。
9087
正如您所看到的,三个垃圾字符正在输出文件中。当用Notepad ++打开时,我无法看到这些垃圾字符。

请建议

回答

6

这是发生,因为你没有提到的文件编码,同时创建FileInputStream.Assuming文件是UTF-8编码,你需要做这样的事情

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

变化根据文件的编码进行编码

1

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

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

String str; 

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