0

私の以前の投稿を参照して

区切られたファイルから最初の行を削除します

小さいファイルを処理して最初の行を削除することができました....しかし、巨大なファイルの場合、ファイル全体を読み取ってから再度書き戻すため、メモリの問題があります。

誰かがこの問題のより良い代替案を提案できますか?

Advanceをありがとう。

ヴィヴェック

4

2 に答える 2

1

ファイルを 1 行ずつ読み取り、所定の場所に書き込む必要があります。

BufferedReader reader = new BufferedReader(new FileReader("foo.txt"));
PrintWriter writer = new PrintWriter(new FileWriter("_foo.txt"));

String line;
boolean firstLine = true;

while ( (line = reader.readLine()) !=null) {
    if (!firstLine) {
        writer.println(line);
        firstLine = false;
    }
}
于 2011-07-18T10:18:46.060 に答える
0

ファイル全体を書き直して 1 行を削除することを避けるために、ファイルの「先頭」へのインデックスを維持できます。このインデックスは、開始点と思われる場所であり、ファイルの読み取りを開始する場所です。定期的に、たとえば一晩に 1 回、ファイルを書き直して、この「開始」がファイルの実際の開始位置になるようにします。

この「開始」場所は、別の時点または既存のファイルの開始時に保存できます。

これは、ファイルをまったく書き直すことなく、ファイルのすべての行を徐々に「削除」できることを意味します。

于 2011-07-18T13:04:29.183 に答える