2017-11-20 10 views
0

私は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ではです。

誰でもいいですね。

+1

java 8以上がある場合は、https://www.mkyongをご覧ください。com/java8/java-8-stream-read-a-file-line-by-line/ – IEE1394

+1

アクセスされたfilrのバージョンに実際にその行があることは確かですか? – Lino

+3

私はそれをテストし、それはうまく動作します..あなたのプログラムは例外をスローするかもしれませんか? – IEE1394

答えて

-1

これらの変更を試してみてください。あなたのポストで私はあなたの3行をコピーしてメモ帳に入れ、保存してからメモ帳で開いた。それは問題を決して与えなかった。

+0

あなたは編集を読んでいますか?私はファイルを読み込む方法を知っていますが、メモ帳を使用することで問題が発生したようです。 – notyou

+0

それはユニコード文字と関係します。詳細は[こちら](https://unicode-table.com/en/)にあります。そのまま中間のエディタにコピーして保存することもできます。コピー元のソースが、現在の環境で異なるシンボルにマップされている別のシンボルを使用することがあるためです。例:Source - > Notepad - > Notepad ++。また、他の答えをチェックして、それが役立つかどうかを確認することもできます。 – kemparaj565

0

これはおそらく、ファイルのエンコード/文字セットの違いが原因である可能性があります。ファイルをUTF-8モードで読み込んで確認してください。

+0

はい、これは問題の一部である可能性があります。しかし、私の主な質問は、 '*'が含まれているとファイルのいずれも読み込まない理由です。 – notyou

+0

ファイルを共有できませんでした。問題を再現できませんでした。 – user3438137

関連する問題