有谁知道如何从文本文件中删除一行。
我正在寻找其他内容,而不是逐行读取和写入并跳过您想要删除的行。
例如:我的文件有 1346 行,我想删除第 520 行。
文本文件不支持零成本重组。它只是一个连续的字节序列。如果要从文件中间删除一些字节(并暗示将所有后续字节向上移动以覆盖已删除的字节),则必须复制并重新写入所有这些后续字节。
你有几个选择。将整个文件读入内存,进行删除,然后将文件写出。(希望是一个临时文件,在成功完成写入后在原始文件之上重命名)或者做一些花哨的步法,只需从源文件中读取缓冲区的数据并对其进行一些工作。
解决方案是否需要用 Java 编写?UNIX 命令sed和grep就是为此目的而设计的,它们的性能可能会更好。如果您运行的是 Windows,则可以通过Cygwin访问这些工具,或者那里可能有本地端口。
是的。罗布是对的。试试这个
sed -e '520d' <yourfile>
将输出重定向到新文件
这里 520 是你要删除的行号
您可以读入整个文件,进行正则表达式替换(假设您知道完全匹配等),然后将文件写回。
就我个人而言,我不确定这个答案有多大价值:)
好吧,如果您知道长度(或最后一行的内容):
long lastLineLength = lastLine.length();
RandomAccessFile raf = new RandomAccessFile("RandFile.txt", "rw");
long length = raf.length();
raf.setLength(length - lastLineLength );
raf.close();