TLを含むファイルのいずれかを読み取ることができません。特定の文字(複数可)
DRなぜ–
のファイルに読み込みがNotepad
にいかなるデータを見つけることができませんか?
問題:
はこれまで、私はここで質問に答える/テスト用/書き込みテキストを読むためにただの老いNotepad
(バージョン6.1)を使用してきました。コードの
単純なビットは、テキストファイルの内容を読み込み、およびコンソールにそれらを印刷します
Scanner sc = new Scanner(new File("myfile.txt"));
while (sc.hasNextLine()) {
String text = sc.nextLine();
System.out.println(text);
}
すべてがうまく、期待通りの線が印刷されます。
正確に文字:–
をテキストファイルのどこに置いても、ファイルを読み取ることはなく、コンソールには何も印刷されません。
もちろん、Notepad++
または他の(より良い)テキストエディタを使用することはできますが、問題はありません。ダッシュ文字を含むテキストは期待どおりに印刷されます。
私もNotepad
を使用して、UTF-8
を指定することができ、それが正常に動作します:私の元Notepad
ファイルで
File fileDir = new File("myfile.txt");
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileDir), "UTF8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
、私はコピーしてNotepad++
に(–
含む)のテキストを貼り付けると2を比較する場合WinMerge
のファイルでは、Notepad
のダッシュは–
ですが、Notepad++
の場合は–
です。
質問:この–
はNotepad
で、テキストファイルで使用されている、それは何は基本的にhasNextLine()
が偽であることを私に言って、読まない
なぜ、?この特定の文字を含む行まで少なくとも入力を読み取るべきではないでしょうか?
再現手順:は
- Windows 7では、右クリックして、新しいテキストドキュメントを作成します。
- は
- は、ファイル内の任意の場所にこの文字に入れて(など、任意の特殊文字なし)ファイルに任意のテキストを置く:
–
- 実行上記のコードの最初のブロック
出力:BUILD SUCCESSFUL (total time: 1 second)
つまり、テキストのをに印刷しません。
PS:
私は尋ね知っquestion昨日(まあ、それは同じことになった)が、残念ながら、それは私がうまく自分自身を説明していないかもしれない、または視聴者の一部はdidnのようで似て質問を完全に読んではいけません。いずれにせよ、私はここでそれをより良く説明したと思う。
ええと、私はあなたが意味するものを参照してください。それでは、なぜ* *テキストを読まないのでしょうか?その特定の文字まで行を読み上げるべきでしょうか? – notyou
私はそれについて本当に分かりません。おそらく、入力を最初に解析するScannerクラスを使用しているためです。あなたはBufferedReaderを試すことができます –
あなたがバイトを取得して、Javaが実際にファイルFiles.readAllBytes(Path)を読み込んでいるかどうか調べてみることができます。 –