0

参考我之前的帖子

从分隔文件中删除第一行

我能够处理较小的文件并删除第一行....但是如果文件很大,则会出现内存问题,因为我正在读取整个文件然后再次将其写回。

任何人都可以提出一个更好的选择来解决这个问题。

感谢提前。

维韦克

4

2 回答 2

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

为避免重写整个文件以删除一行,您可以维护文件“开始”的索引。该索引是您认为开始的地方,也是您开始读取文件的地方。定期,例如每晚一次,您可以重写文件,以便这个“开始”是文件实际开始的地方。

这个“开始”位置可以存储在另一个时间或现有文件的开头。

这意味着您可以逐步“删除”文件的所有行,而无需重新编写它。

于 2011-07-18T13:04:29.183 回答