java - Java:直接将特定行(带有流)编辑/删除到原始文件中
问题描述
这是我的场景:我有一个巨大的 .txt 文件(~16GB),其中包含一些必须删除的行(可以通过 .contains() 轻松找到)。显然,将整个文件加载到 RAM 上并使用扫描仪进行探索,然后将结果保存在新的 .txt 文件中的想法是不可行的(因为我有 16GB 的 RAM)。我也知道,通过流,我可以逐行读取文件,避免内存泄漏。我不知道(并且无法找到)是否可以编辑该特定行并将其放回文件中的位置。否则,是否可以仅使用“正确”行重写一个新的 .txt 文件,其方式与允许我逐行读取的方式类似,因此无需将整个文件加载到内存中,因为之前或之后会变得和原来一样大吗?
解决方案
设置将逐行读取文件的 Stream Reader,以及将输出到新文件的 Stream writer。如果阅读器没有找到要编辑的行,编写器只需将该行写入新文件。如果读者发现了它想要编辑的行,创建一个方法来操作并返回它,然后让 Writer 写入被操作的行而不是原始行。
不允许您使用 Streamreader 和 Streamwriter 访问同一个文件。
推荐阅读
- python - 使用 API 响应中的访问令牌打开 url
- android - 在 MotionLayout 进行时视图操作不起作用
- r - 按包含系统日期的行子集数据框
- c++ - 将数组索引复制到另一个数组
- c++ - 问题:“无法将参数 1 从 'double' 转换为 'char(*)(double)'”
- android - 从对象列表中获取特定的 object.value kotlin
- python - 如何使用 django 和 celery 在 tasks.py 中创建定期任务
- sql - SQL查询根据先前的值计算运行计数器
- python - 错误:OSError:libmediainfo.so.0:无法打开共享对象文件:没有这样的文件或目录
- swift - Swift Append() 方法覆盖以前的数据