Java:直接在原始文件中编辑/删除特定行(带流)

Java:直接在原始文件中编辑/删除特定行(带流),java,file,parsing,stream,Java,File,Parsing,Stream,这就是我的场景:我有一个巨大的.txt文件(~16GB),其中包含一些必须删除的行(可以通过.contains()轻松找到)。 显然,将整个文件加载到RAM中,并使用扫描仪进行浏览,然后将结果保存在新的.txt文件中的想法是不可行的(因为我有16GB的RAM)。 我还知道,通过流,我能够逐行读取文件,避免内存泄漏。我不知道(也没能找到)是否可以编辑该特定行并将其放回文件中。 否则,是否可以用与允许我逐行读取的方式类似的“正确”行重写一个新的.txt文件,因此无需将整个文件加载到内存中,因为在它之

这就是我的场景:我有一个巨大的.txt文件(~16GB),其中包含一些必须删除的行(可以通过.contains()轻松找到)。 显然,将整个文件加载到RAM中,并使用扫描仪进行浏览,然后将结果保存在新的.txt文件中的想法是不可行的(因为我有16GB的RAM)。 我还知道,通过流,我能够逐行读取文件,避免内存泄漏。我不知道(也没能找到)是否可以编辑该特定行并将其放回文件中。
否则,是否可以用与允许我逐行读取的方式类似的“正确”行重写一个新的.txt文件,因此无需将整个文件加载到内存中,因为在它之前或之后,它将变得与原始文件一样大?

设置一个流读取器,逐行读取您的文件,以及将输出到新文件的流编写器。如果读卡器找不到要编辑的行,编写器只需将该行写入新文件。如果读者发现了要编辑的行,请创建一个方法来处理该行并返回它,然后让作者编写该处理行而不是原始行

不允许您使用Streamreader和Streamwriter访问同一文件