我有一个调用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 ++打开时,我无法看到那些垃圾字符。
请建议
答案 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);
}