1

テキストファイルをナビゲートするために使用しているGUIプログラムがあります。それほど複雑なことではなく、ファイルを参照して新しい情報を追加する機能だけです。ただし、テキストファイルの最初の行と最後の行も識別できるようにしたいと思います。基本的に、次のようなテキストファイルがある場合:

  • カリフォルニア、西、1981、115、25.99
  • ニューヨーク、東、1991、120、19.95

ボタンを押すと、最初に「カリフォルニア」というテキストが表示され、テキストの最初の行が識別されます。ただし、最初の行の残りの情報ではなく、カリフォルニアに表示したいだけです。同じスタイルで、最後の行に対してこれを実行したいと思います。

StringTokenizerでFileReaderとFileBufferを使用しています。最初の行の最初のトークンと最後の行の最初のトークンを呼び出す方法はありますか?助けてくれてありがとう!

4

5 に答える 5

3

あなたができる行の最初のトークンを取得するには

String line = "California, West, 1981, 115, 25.99"
String firstToken = line.split(",")[0]

最後の行を取得するには、ファイル全体を反復処理してリストに保存し、次のような最後の要素を取得します。

String line ="";
List<String> list = new ArrayList<String>();
          while((line = fileReader.readLine())!= null){
                 list.add(line)
         }
 list.get(0) // first line
 list.get(list.size()-1) // last line
于 2011-04-10T19:15:27.527 に答える
1

提供された回答は、ほとんどの (大多数の) 状況でうまく機能するはずです。RandomAccessFileしかし、本当に巨大な入力ファイルの場合は、 (RAF)を使用して別のアプローチを取るのが理にかなっているかもしれません。

RAF を使用して、改行文字に到達するまで最初のバイトを読み取り (最初の行の場合)、RAF の末尾から逆方向にシークして最後の改行を見つけ、そこから最後まで読み取ります (最後の行の場合)。 .

行が固定列幅 (FCW) の場合はさらに簡単ですが、このデータは CSV です。FCW の場合、ファイル サイズと行幅 (長さ) を知っている最後の行がどこから始まるかを計算し、そのポイントに直接シークすることができます。

于 2011-04-10T22:08:08.563 に答える
1

これは非常に古い質問ですが、現在、これを行う簡単な方法があり、この例は見つかりませんでした. 私は新しい答えを出しています:私はJava 11を使用していますが、Java 8で利用できる可能性があります。確認する必要があります。

Long lines = Files.lines(Paths.get(file)).count();
String first = Files.lines(Paths.get(file)).findFirst().get();
String last = Files.lines(Paths.get(file)).skip(lines - 1).findFirst().get();
于 2021-06-27T17:19:09.657 に答える
0

テキストファイルから読み取る方法はありませんか?

間にある行が無関係である場合は、コレクションを蓄積する必要なく、最初の行を読み取って最後までスキャンできます。

import java.io.BufferedReader;
import java.io.FileReader;

/** @see http://stackoverflow.com/questions/5614004 */
public class FirstLastTest {

    private static String first, last, line;

    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new FileReader(args[0]));
        first = in.readLine();
        while ((line = in.readLine()) != null) {
            if (line != null) {
                last = line;
            }
        }
        System.out.println(first + "\n" + last);
    }
}
于 2011-04-10T20:50:29.483 に答える
0

目的の文字列を見つける方法のサンプル

ストリーム リーダーを使用してファイルを読み取る

  streamreader sr=new streamreader("Your.txt");
  while(sr.peek()>=0)
  {
     string strLine=sr.readLine();
      if(strline.startswith("California"))
      {
         //Dispaly it
       }
          if(strline.startswith("NewYork"))
          {
             //Display it
          }
    }
于 2011-04-10T19:19:00.237 に答える