私はthisのユーザーに答えをお手伝いしようとしていましたが、ファイルの読み込みが期待通りに機能していません。ファイルの読み込みがありません
私はOPは最初の2行のファイルを作成する場合:
学習のJava - ウィリアム・レーン-12.00 - ワイリー - 0811234561
- ウィリアム・ストール - 25.00 - プレンティスホール - 1304086641
出力が期待されているとおり
Learning Java - William Lane -12.00 - Wiley - 0811234561
- William Stalling - 25.00 - Prentice Hall - 1304086641
しかし、私は三行を追加する場合:
学習のJava - ウィリアム・レーン-12.00 - ワイリー - 0811234561
- ウィリアム・ストール - 25.00 - プレンティスホール - 1304086641
OOPプログラミング - グラハム冬 - 32.50 - O'Reilly - 0471974555
出力は空白です。
私のコードは簡単にテストできます。上記のリンクされた質問から直接ファイルの内容をコピーして貼り付けました。その行に特殊文字がありますか?そうであれば、それを見つける方法は?そして、なぜ他の行を印刷しないのでしょうか?
Scanner sc = new Scanner(new File("myfile"));
while (sc.hasNextLine()) {
String nameLine = sc.nextLine();
System.out.println(nameLine);
}
私は、デバッガを通してそれを実行し、sc.hasNextLine
戻りfalse
とプログラムは終了します。
編集:
私はこれをテストするために、基本的Notepad
を使用して、32.50とオライリーの間にダッシュが少し長くなっていること(ブラウザ上で)気づいたんです。だから私はこのダッシュを削除し、保存され、プログラムは期待どおりに動作します。私はそれを戻して保存し、プログラムを再実行すると、何も表示されません。私は毎回これを作り出すことができます。
次に、私はNotepad++
でテストし、全てが円滑に機能しました。幸せな日々。
私はWinMerge
で2つのファイルの比較を行いました。それは基本的に違いがダッシュであると言います。Notepad++
では–
ですが、Notepad
では–
です。
誰でもいいですね。
java 8以上がある場合は、https://www.mkyongをご覧ください。com/java8/java-8-stream-read-a-file-line-by-line/ – IEE1394
アクセスされたfilrのバージョンに実際にその行があることは確かですか? – Lino
私はそれをテストし、それはうまく動作します..あなたのプログラムは例外をスローするかもしれませんか? – IEE1394