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();