【发布时间】:2014-09-27 17:05:15
【问题描述】:
所以我有这个文件:
randomline
ernegvggvdr
dsvdfssvdsv
dfsfvfvs
svdfsdfdfs
dfsfvfv
dsvvsvvfggd
这持续了成千上万行。实际上,它大约是 45000 行。
我想阅读前 100 行并删除它们。
所以我知道下面的代码会读取文件中的所有内容:
Files.readAllBytes(new File(new File("").getAbsolutePath() + "lines.txt").toPath());
我也知道下面的代码会删除整个文件:
new File(new File("").getAbsolutePath() + "line.txt").delete();
然后也许用这个重新创建一个空的:
new File(new File("").getAbsolutePath() + "line.txt").createNewFile();
但所有这些都适用于整个文件,而不是前 X 行。
【问题讨论】:
-
文件是连续的。您不能只删除文件开头的行。您可以做的是 1. 逐行读取文件。 2. 对前 100 行读取不做任何事情。 3. 将剩余的行写入另一个文件。 4.删除原文件。 5.将创建的文件重命名为原始名称。阅读 Java IO 教程:docs.oracle.com/javase/tutorial/essential/io/charstreams.html
-
new File("").getAbsolutePath() + "line.txt"... 很有趣,并不是因为您忘记了文件分隔符。请改用new File("line.txt").getAbsolutePath()。 -
@JarrodRoberson “重复”问题是关于 C# 的,没有公认的答案。 (而且它的两个答案并没有真正的帮助,恕我直言。)所以我不确定这是否会回答 OP 的问题。
-
我显然不小心粘贴了错误的链接。