2012-04-14 6 views
0

おはようございます。JavaのファイルからEOFシンボルのようなsmthを得る方法

私はsableCCを使用しており、Readerオブジェクトを入力として受け取ります。たとえば、このコードは正しく動作:

compile (new StringReader ("print 1")); 

にStringReaderを返すので-1文字列が終わった後:

StringReader sr = new StringReader("print 1"); 
while (sr.ready()) 
    System.out.println (sr.read()); 

は与える:

112 
114 
105 
110 
116 
32 
49 
-1 
... always -1 

しかし、私は、ファイルに同じ文字列を書きます余分な行や文字を使わずに "prog"を作成し、その上にFileReaderを作成すると、-1文字の代わりに改行文字が返されるため、コンパイラは存在しない2行目でブレークします。

FileReader fr = new FileReader(new File("prog")); 
while (fr.ready()) 
    System.out.println (fr.read()); 

は与える:ファイルリーダーからにStringReaderからと同じ動作を取得するための最短の道である、またはSableCCかもしれ

112 
114 
105 
110 
116 
32 
49 
10 

何横向きすることができますか?

+0

ファイル "prog" 'を表示/編集するためにどのテキストエディタを使用していますか? –

答えて

2

FileReaderが改行文字を返した場合、です。テキストエディタに表示されない場合でも、ファイル内に改行文字があります。

残念ながら、いくつかのエディタは保存時にテキストファイルに新しい空白行を自動的に追加します。例えば、emacsとgeditの両方がこれを行うと思います。別のエディタを試してみてください。

+0

viは確かにそれを行い、emacsはしません。 –

関連する問題