这是我的情况:我有一个很大的.txt文件(〜16GB),其中包含一些必须删除的行(可以使用.contains()轻松找到)。 显然,将整个文件加载到RAM并使用扫描仪进行浏览,然后将结果保存到新的.txt文件中的想法是不可行的(因为我有16GB的RAM)。 我也知道使用流可以逐行读取文件,从而避免内存泄漏。我不知道(也无法找到)的是,是否有可能编辑该特定行并将其放回文件中。 否则,是否可以仅使用“正确”行重写新的.txt文件,其方式与允许我逐行读取的方式类似,因此无需在内存中加载整个文件,因为在此之前或之后会变得和原来的一样大?
答案 0 :(得分:0)
设置将逐行读取文件的Stream Reader和将输出到新文件的Stream writer。如果读者找不到要编辑的行,则编写者只需将该行写入新文件即可。如果读者发现了要编辑的行,请创建一种方法来操纵该行并返回它,然后让Writer编写该被操纵的行而不是原始行。
不允许您使用Streamreader和Streamwriter访问同一文件。