如何在Java中删除一个文件的行而不写入另一个文件

如何在Java中删除一个文件的行而不写入另一个文件,java,file-io,java-io,Java,File Io,Java Io,我想在文本文件中找到一行并删除它。 例: aaa aaa bbb -> ccc (bbb deleted) ccc 有一个例子可以这样做,但它会写入新文件并重写。如何在不写入另一个文件的情况下执行此操作(也不重写同一个文件,因为它包含大量数据)是否尝试将文本文件内容写入字符串数组变量 下面是一个伪代码,我将如何做到这一点 var your_text_content= txt file; var your_new_text_content = your_text_c

我想在文本文件中找到一行并删除它。 例:

 aaa       aaa
 bbb   ->  ccc (bbb deleted)
 ccc

有一个例子可以这样做,但它会写入新文件并重写。如何在不写入另一个文件的情况下执行此操作(也不重写同一个文件,因为它包含大量数据)

是否尝试将文本文件内容写入字符串数组变量

下面是一个伪代码,我将如何做到这一点

var your_text_content= txt file;
var your_new_text_content = your_text_content.replace("line you are looking for",""); 
txtfile = your_new_text_content;

我认为唯一能做的就是写一个新文件

如果您考虑文件系统,以及文件如何存储在硬盘上。大多数文件系统将文件作为顺序块存储在硬盘上。如果您只是从文件中删除这些字节,那么文件中将有一个空洞。您必须将删除的字节右侧的字节移到文件中的左侧。无论哪种方式,文件系统都会限制您


相反,您可以尽量减少写入新文件的次数。例如,如果您正在为大文件制作文字处理器,您可以保存一个包含用户所做编辑的文件,并在用户关闭文件后执行这些命令(并且只写入一次文件)。

您不能。所有具有此功能的软件都会将文件内容复制到一个变量,并删除该行,然后将删除该行的内容复制回原处

因此,您需要复制文件的内容。逐行阅读,直到你到达该行并删除它,然后再次保存内容

记事本和其他编辑器就是这样工作的。这就是为什么大多数编辑器只接受高达1GB的文件。因为处理大文件需要时间

希望这有帮助


我不会发布任何代码,因为您已经说过找到了解决方案。

在这里,文件也正在重写。我想删除文件的一行而不重写到另一个文件或同一个文件。