首页 > 解决方案 > Java:直接将特定行(带有流)编辑/删除到原始文件中

问题描述

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

标签: javafileparsingstream

解决方案


设置将逐行读取文件的 Stream Reader,以及将输出到新文件的 Stream writer。如果阅读器没有找到要编辑的行,编写器只需将该行写入新文件。如果读者发现了它想要编辑的行,创建一个方法来操作并返回它,然后让 Writer 写入被操作的行而不是原始行。

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


推荐阅读