从txt文件java中删除一行
我有一个大文件,只需要删除几行,是否有任何方法可以打开新文件并复制整个文本?
编辑:主要问题是,当它在多个txt filse中运行时,该程序失败
回答:
有什么方法可以做到而无需打开新文件并复制整个文本?
不,没有。当然,如果您想 安全地 做的话就没有。
而且RandomAccessFile
也不会真正帮助您。它可以让您用相等数量的字节替换文件中的字节序列,但这并不意味着删除一行。
您可以这样使用RAF:
给定初始状态
L1L2L3...LN
替换L2L3...LN
为L3...LN
或者您也可以按照@halfbit的回答,使用RAF一次“滑行”一行。
然而:
在最坏的情况下,您将复制整个文件内容,通常情况下涉及读取和写入行字节
O(N)
。执行此操作的简单方法需要
O(N)
在内存中保留行。“滑动”方法需要
O(N)
I / O操作(即系统调用)。通过就地文件更新删除行是有风险的。如果应用程序在过程中被中断(例如,电源故障),那么您将得到一个损坏的文件。
FWIW:这是不是在Java中的限制 本身 。而是它限制了现代操作系统表示/模型文件的方式。
以上是 从txt文件java中删除一行 的全部内容, 来源链接: utcz.com/qa/400284.html