参考我之前的帖子
我能够处理较小的文件并删除第一行....但是如果文件很大,则会出现内存问题,因为我正在读取整个文件然后再次将其写回。
任何人都可以提出一个更好的选择来解决这个问题。
感谢提前。
维韦克
参考我之前的帖子
我能够处理较小的文件并删除第一行....但是如果文件很大,则会出现内存问题,因为我正在读取整个文件然后再次将其写回。
任何人都可以提出一个更好的选择来解决这个问题。
感谢提前。
维韦克
您必须逐行读取文件并将其写入原处:
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;
}
}
为避免重写整个文件以删除一行,您可以维护文件“开始”的索引。该索引是您认为开始的地方,也是您开始读取文件的地方。定期,例如每晚一次,您可以重写文件,以便这个“开始”是文件实际开始的地方。
这个“开始”位置可以存储在另一个时间或现有文件的开头。
这意味着您可以逐步“删除”文件的所有行,而无需重新编写它。