当前位置: 首页 > 面试题库 >

从txt文件java中删除一行

洪凯定
2023-03-14
问题内容

我有一个大文件,只需要删除几行,是否有任何方法可以打开新文件并复制整个文本?

编辑:主要问题是,当它在多个txt filse中运行时,该程序失败


问题答案:

有什么方法可以做到而无需打开新文件并复制整个文本?

不,没有。当然,如果您想 安全地 做的话就没有。

而且RandomAccessFile也不会真正帮助您。它可以让您用相等数量的字节替换文件中的字节序列,但这并不意味着删除一行。

您可以这样使用RAF:

给定初始状态L1L2L3...LN替换L2L3...LNL3...LN

或者您也可以按照@halfbit的回答,使用RAF一次“滑行”一行。

然而:

  • 在最坏的情况下,您将复制整个文件内容,通常情况下涉及读取和写入行字节O(N)

  • 执行此操作的简单方法需要O(N)在内存中保留行。

  • “滑动”方法需要O(N)I / O操作(即系统调用)。

  • 最重要的是: 通过就地文件更新删除行是有风险的。如果应用程序在过程中被中断(例如,电源故障),那么您将得到一个损坏的文件。

FWIW:这是不是在Java中的限制 本身 。而是它限制了现代操作系统表示/模型文件的方式。



 类似资料:
  • 问题内容: 我有以下要在node.js中操作的文本文件(“ test.txt”): 我想删除第一行,以使其成为第一行。我怎样才能做到这一点? 问题答案:

  • 我知道这是非常基本的东西,但出于某种原因,我在使用bufferedReader/Writer时遇到了问题。我试图获取第一行文本并将其返回到另一个方法。然而,由于某些原因,写入程序似乎没有写入临时文件,也没有更改临时文件的名称。 通过抛出一些印刷声明,我已经能够弄清楚: > 私有静态字符串wavFinder()引发IOException{ 以下是我正在使用的方法。如果你注意到什么,请告诉我,如果你有

  • 问题内容: 我的意思是,我想从Android上的文本中删除行。如何删除?我不想读取一个txt并使用删除行创建另一个。我想从现有的txt中删除行。谢谢。 问题答案: 尽管看起来很琐碎,但这是一个非常棘手的问题。对于可变的行长,也许唯一的选择是逐行读取文件以识别目标行和目标行。然后复制文件的以下部分(从开始),最终将文件长度截断为原始大小减去目标行的长度。我使用a 访问内部指针,也按行读取。 该程序需

  • 问题内容: 在Java中,我想删除包含文件和文件夹的文件夹中存在的所有内容。 此代码不起作用,执行此操作的最佳方法是什么? 问题答案: 如果您使用Apache Commons IO,那么它是单线的: 请参阅FileUtils.deleteDirectory() 番石榴曾经支持类似的功能: 几个版本之前已将其从Guava中删除。 虽然以上版本非常简单,但也很危险,因为它在不告诉您的情况下做出了许多假

  • 问题内容: 我正在尝试删除包含特定字符串的特定行。 我有一个名为 numbers.txt 的文件,其内容如下: Peter· Tom TOM1 Inflammation 我要删除的是文件中的那个 tom ,所以我做了以下功能: 输出为: 彼得· 颜 如您所见,问题在于该函数删除了 tom 和 tom1 ,但是我不想删除 tom1 。我只想删除 tom 。这是我想要的输出: 彼得 TOM1 燕 有什

  • 从Java中删除文件夹时发现问题。我使用了以下命令,但运气不好。但是,我可以使用Windows 8.1通过命令提示符删除文件夹: 在这三种情况下,我得到的例外是: java.io.IOException:无法运行程序rmdir:CreateProcess错误=2,系统找不到java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)java.la