1

FileReader クラスに問題があります。

通過する行のオフセットを指定するにはどうすればよいですか? また、停止するタイミングをどのように伝えるのですか? .txt ファイルの各行を通過させたいとしましょう。

どうすればいいですか?現在 ReadLine() を使用していますが、それでオフセットを指定する方法はないと思います。

迅速なヘルプは非常に高く評価されます。ありがとう。

4

4 に答える 4

3
  1. できません。FileReader は、一度に 1 文字または 1 行ずつ読み取ります。明らかに、それを拡張またはラップして不要な行にスキップする独自のコードを作成できます。

  2. 余談ですが、FileReader または FileWriter の使用には注意してください。これらはデフォルトの LOCALE 文字セットを使用します。文字セットを強制する場合は、OutputStreamWriter または InputStreamReader を使用します。例

Writer w = new FileWriter(file) は Writer w = new OutputStreamWriter(new FileOutputStream(file),"UTF-8"); に置き換えることができます。<=== 文字セットの設定方法を参照してください。

  1. 別の方法: FIXED-WIDTH テキストがある場合は、任意の位置にシークできる RandomAccessFile を調べます。固定幅のテキストまたは行にスキップするインデックスがない限り、これはあまり役に立ちません。しかし、それは便利です:)
于 2010-03-19T19:43:40.753 に答える
2

すべての行を読み取りますが、別の変数を使用して現在の行を数えます。continue処理したくない行 (たとえば、100 行目より前) にいるbreak場合、およびこれ以上行を処理したくない場合 (200 行目以降) に呼び出します。

于 2010-03-19T19:39:04.213 に答える
1

読者に特定の行だけを読むように指示する方法はありません。カウンターを使用してそれを行うことができます。

try { 
    BufferedReader in = new BufferedReader(new FileReader("infilename")); 
    String str; 
    int lineNumber = 0;

    while ((str = in.readLine()) != null) { 
        lineNumber++;

        if (lineNumber >= 100 && lineNumber <= 200) {
            System.out.println("Line " + lineNumber + ": " + str);
        }
    } 

    in.close(); 
} catch (IOException e) { } 
于 2010-03-19T19:45:35.797 に答える
0
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
for(int i=0;i<100;i++,in.readLine()){}
String line101 = in.readLine();
于 2010-03-19T19:49:22.067 に答える