Java向文件的特定行添加文本

7

我想知道是否可以用Java向文件中添加一行。

例如,我的文件是:

1: line 1
2: line 2
3: line 3
4: line 4

我想在第三行添加一行例子,使其看起来像这样:

1: line 1
2: line 2
3: new line
4: line 3
5: line 4

我找到了如何在空文件或文件末尾添加文本的方法,但我不知道如何在文本中间添加而不擦除该行。

有没有其他方法,而不是将第一个文件分成两部分,然后创建一个文件,将第一部分添加新行,然后再添加第二部分,因为那感觉有点极端?

谢谢。


2
你可以使用https://dev59.com/MHVC5IYBdhLWcg3wcwwm来插入文本到已存在的Java文件中。 - nikli
2个回答

13

在Java 7+中,您可以使用以下方式的FilesPath类:

List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);

举个例子:

Path path = Paths.get("C:\\Users\\foo\\Downloads\\test.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

int position = lines.size() / 2;
String extraLine = "This is an extraline";  

lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);

你好,我尝试使用这个东西,但是我遇到了一个IDE错误:“使用未在配置的语言级别中提供的API”。显然,Path和Files被记录为1.6+,但我正在使用Java版本1.7,所以它应该可以工作,对吧?我真的不太明白。 - user3718160
请查看以下内容:https://dev59.com/aGMm5IYBdhLWcg3wT9mU - M. Suurland
即使这样,在我的IDE中我仍然看到一个错误,但代码已经运行了,所以我会忽略它,非常感谢! - user3718160
欢迎 :) 我没有在运行InteliJ(我自己在运行Eclipse),但我猜这与你的IDE有关。 - M. Suurland
我该如何扩展它,以便在具有特定字符串的行之前添加一行,例如,在具有“line 4”的行之前添加new line - Chris F

1
你可以将文件读入一个ArrayList中,可以在任何位置添加元素并操作所有元素及其数据,然后可以将其重新写入文件。 注:您无法直接向文件添加一行,只能读取和写入/追加数据,必须在内存中操作数据,然后再次写入它。 如果这对你有用,请让我知道。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接