【问题标题】:Junk characters while reading text file in java在java中读取文本文件时出现垃圾字符
【发布时间】:2013-07-09 04:39:46
【问题描述】:

我有一个调用 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.
如您所见,输出文件中出现了三个垃圾字符。用记事本++打开时,我看不到那些垃圾字符。

请推荐

【问题讨论】:

    标签: java


    【解决方案1】:

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

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

    根据文件的编码更改编码

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        BufferedReader in = new BufferedReader(
        new InputStreamReader( new FileInputStream("output.txt"), "UTF8"));
        
        String str;
        
        while ((str = in.readLine()) != null) {
          System.out.println(str);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-01
          • 1970-01-01
          • 2021-11-28
          • 1970-01-01
          • 1970-01-01
          • 2016-03-04
          相关资源
          最近更新 更多