3

私は、何らかの処理を行い、出力ファイルを生成するWindowsバットファイルを呼び出すJavaを持っています。
Process p = Runtime.getRuntime().exec("cmd /c "+filename);
次のプログラムからファイルを読み取るとき。(filexists()ファイルが存在するかどうかをチェックする関数です)。出力ファイルには 1 行のみが含まれます

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.
ご覧のとおり、3 つのジャンク文字が出力ファイルに含まれています。Notepad++ で開くと、これらのジャンク文字が表示されません。

提案してください

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 に答える