私の以前の投稿を参照して
小さいファイルを処理して最初の行を削除することができました....しかし、巨大なファイルの場合、ファイル全体を読み取ってから再度書き戻すため、メモリの問題があります。
誰かがこの問題のより良い代替案を提案できますか?
Advanceをありがとう。
ヴィヴェック
私の以前の投稿を参照して
小さいファイルを処理して最初の行を削除することができました....しかし、巨大なファイルの場合、ファイル全体を読み取ってから再度書き戻すため、メモリの問題があります。
誰かがこの問題のより良い代替案を提案できますか?
Advanceをありがとう。
ヴィヴェック
ファイルを 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;
}
}
ファイル全体を書き直して 1 行を削除することを避けるために、ファイルの「先頭」へのインデックスを維持できます。このインデックスは、開始点と思われる場所であり、ファイルの読み取りを開始する場所です。定期的に、たとえば一晩に 1 回、ファイルを書き直して、この「開始」がファイルの実際の開始位置になるようにします。
この「開始」場所は、別の時点または既存のファイルの開始時に保存できます。
これは、ファイルをまったく書き直すことなく、ファイルのすべての行を徐々に「削除」できることを意味します。