0

テキスト ファイルから読み取り、入力を使用して複数の異なるオブジェクトを作成しようとしています。ファイルが空になった後も読み続けたくないのは明らかなので、ファイル内の必要なポイントまで読み取り、次の行を読み取り、null をテストする isEmpty() メソッドがあります。

問題は、それが空でない場合、ファイルの読み取りに進むことです...ただし、次の行からです。つまり、テストするために最初の行を読みましたが、もう一度読むことができません。

私の現在の考えは、これをテストするダミー オブジェクトを作成し、実際に使用する同一の 2 番目のオブジェクトを使用することです。しかし、これはちょっと無駄に思えますし、もっと良い方法があるに違いないと思います....みんなありがとう!

注: 読み取るメソッドは、空をチェックするメソッドと同じではありません。同じ bufferedReader がオブジェクトのメソッド全体で使用されています。そうしないと、ユーザーにファイル名を再度入力するように求める必要がありますが、これはやりたくないことです。

4

2 に答える 2

0

RandomAccessFileを使用することをお勧めします。これにはスキップをサポートする機能があり、後方に移動できます。

以下の方法を使用することに興味があるかもしれません。

  void  seek(long pos) 
  int   skipBytes(int n) 
  String    readLine() 
于 2012-11-01T18:28:06.423 に答える
0

BufferedReaderイディオムにこだわってみませんか?ファイルが空かどうかを尋ね、空でない場合は次の項目を取得する代わりに、次の項目を直接要求し、項目がなくなった場合はメソッドに null を返すようにします。はるかに簡単です:

while ((line = reader.readLine()) != null) {
    ...
}

それ以外の場合は、 を使用mark()して現在の位置をマークし、数行先読みreset()してから、マークに戻ることができます。

于 2012-11-01T18:30:02.590 に答える