JavaのBufferedReaderのは、空のtxtファイルを読み込みますが、nullを返しません。

Kcits:

私は、空のtxtファイルを読むためにJavaのBufferedReaderのを使用しようとしました。

ここに私のコードは次のとおりです。

    File recentFile = new File(path);
    try {
            BufferedReader reader = new BufferedReader(newInputStreamReader(newFileInputStream(recentFile), "UTF-8"));
            String temp = reader.readLine();
            reader.close();
            if (temp == null) {System.out.println("your file is empty");}
            else {System.out.println(temp);}
    } catch (IOException ex) {}

TXTファイルは完全に空が、私はプログラムを実行すると、コマンドプロンプトのプリントアウトです「?」代わりに、「あなたのファイルが空です」。

私は「ユニコード」に「UTF-8」に変更し、Unicodeにフォーマットをエンコードする私のtxtファイルを変更すると、私はプロンプトから「あなたのファイルが空である」を得ます。

私はUTF-8を使用するときに、なぜ私はこの結果を得るのですか?

ところで、これは重複している場合、私はGoogleでこの複数回の検索を試みたが、私に役立つ何かを見つけることができませんでした、私に知らせてください。

rzwitserloot:

ファイルが完全に空ではありません。それが唯一の説明です。ほとんどの開始時にバイトオーダーマークがあります。これは、(メモ帳でファイルを開いた場合、それはおそらく一見完全に空として表示します)文字のようには見えませんが、それは、カウントを行います。

私はそれがnullを返す開始する前にBRは、おそらく最初の1つの、空の文字列を返します信じることに注意してください。しかし、それは(それがあった場合、あなたはあなたのプログラムのプリントを見ていないだろう、ここで何が起こっているかではありません?)。

あなたは、バイナリエディタであり、実際のバイト数を確認することができます。また、Javaコードのこのスニペットはあなたを教えてくれます。

try (var in = new FileInputStream("/path/to/the/file")) {
    for (int c = in.read(); c != -1; c = in.read()) {
       System.out.print("%02X", c & 0xFF);
    }
}
System.out.println();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=21002&siteId=1