3

できるだけ明確にしようとしますが、私の質問が完璧でない場合はご容赦ください。数行のデータを含む txt ファイルがあります。例:

123 ラルフ・ボーズ 20000 200 1 2

256 エド シェーン 30000 100 2 4

...

各行を順番に読み取り、別のクラスのメソッドに戻して処理する必要があります。StringTokenizer を使用して、各行を要素に分割する方法を知っています。

ただし、一度に1行ずつ読み取り、要素を他のクラスに戻し、処理が完了したら次の行を読み取る方法がわかりません。クラス間のメソッドの連携は正常に動作します (テスト済み) が、一度に 1 行ずつ読み取るにはどうすればよいですか?

各行が配列要素になる配列を作成することを考えていましたが、行数が不明になるため、最終的な長さがわからないため配列を作成できません。

ありがとう

ババ

編集

大まかなセットアップ:

クラスA

end_of_file = f1.readRecord(emp);

        if(!end_of_file)
        { 
           slip.printPay(slipWrite);
        }

クラスB

public boolean readRecord(Employee pers) throws IOException {

        boolean eof = false ;

        String line = in.readLine() ; 

                ???

                }

ファイル名が渡されることはありません

ここまでは最初の行を読むことができますが、行をループして、クラス間を行き来しながら1行ずつ読む方法が必要だと思います。

トリッキー...

4

2 に答える 2

4

一度に 1 行全体を読み取る方法はたくさんあります。Scannerおそらく最も簡単です:

final Scanner s = new Scanner(yourFile);
while(s.hasNextLine()) {
    final String line = s.nextLine();
    YourClass.processLine(line);
}
于 2010-11-30T15:19:21.813 に答える
3
void readLine(String fileName)
{
   java.io.BufferedReader br = null;
   try
   {
      br = new java.io.BufferedReader(new java.io.FileReader(fileName));
      String line = null;
      while(true)
      {
          line = br.readLine();
          if(line == null)
             break;
          // process your line here
      }
   }catch(Exception e){
   }finally{
     if(br != null)
      {
         try{br.close();}catch(Exception e){}
       }
   }
}

また、文字列を分割したい場合は...使用します

文字列クラスsplitメソッド。スペースに応じて分割するには...できる...line.split("\\s*")

それがうまくいくことを願っています

于 2010-11-30T15:22:50.267 に答える