2011-01-21 10 views
1

私は友人から私に与えられたファイルを使用して、非常に単純なテキスト解析プログラムを実行しています。私は、Javaスキャナがファイルを読み取れません

Scanner scan = new Scanner(new File(path)); 
System.err.println(scan.hasNext()); 
while(scan.hasNextLine()) 
    System.err.println(scan.nextLine()); 
System.err.println(scan.next()); 

結果ようにスキャナーを使用してファイルを開くとき しかし、:

false 
Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Scanner.java:855) 
at java.util.Scanner.next(Scanner.java:1364) 
at Test.main(Test.java:18) 

スキャナは空として(いくつかの1400行の長さである)ファイルを扱います。

スキャナでファイルを見ることができないような理由が考えられますか?私は、ファイルをLinuxマシンにWindowsマシンから輸入されたという事実は、それとは何かを持っていることが疑われるが、私の心は、フォーマットやコードエラーのために編集された他の可能性

+1

を使用して、それを解決するには、新しいファイルの作成にすべてのエラーを得るのですか? –

+0

何もありません。 –

+2

示されたスタックトレースには 'Scanner.next()'の呼び出しが含まれていますが、そのような呼び出しはコードスニペットには表示されません。例外がどのラインから来ているのですか? –

答えて

3

問題が見つかりました: ファイルを1バイトずつ見ました。最初のバイトにEOF文字が見つかりました。 Javaはファイルの残りの部分を無視していました。

+0

どのようにファイルをバイト単位でチェックしましたか –

+0

@Anil - これを2年前に提出しました!面白いあなたは今それについてコメントしました。 16進エディタを使用してファイルを開いた。ネット上には、いくつかの種類のフリーヘキサエディタがあります。クイック検索で見つけたものがあります:http://frhed.sourceforge.net/ja/ –

0

EDITに開かれている:・ファースト推測が間違っていた

ファイルの空白でいっぱいの1400行があります。

+0

ファイルは、 \ t \ nの形式に従います。テキストと値の組み合わせがあります。 –

+0

改行も空白と見なされるため、ファイルには少なくとも1400個のファイルがあると考えられています。そのため、最初の理論は説得力がありません。 –

+0

いいえ、後で 'hasNext()'とその親戚の呼び出しは、 'next()'を間に置かないと同じ結果を返します。また、 'hasNext()'の最初の呼び出しでもfalseを返す場合でも、出力から見ることができます。 – Jorn

0

それは多分、この問題のために発生しました:

1-あなたのファイルが多分に作成されていません。

2 - あなたのファイルは他のプログラムで使用されています。

3 - パスアドレスがfalseです。

3

私はあなたがスキャナを作成する前new Scanner(new BufferedReader(new FileReader(fileName)))代わりのnew Scanner(new File(fileName))

関連する問題