【问题标题】:Java add text to a specific line in a fileJava将文本添加到文件中的特定行
【发布时间】:2016-09-13 14:31:27
【问题描述】:

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

例如我的文件:

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

我想在第三行添加一个 line fox 示例,使其看起来像这样

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

我发现了如何在空文件中或文件末尾添加文本,但我不知道如何在不删除行的情况下在文本中间添加文本。

除了将第一个文件分成两部分然后创建一个文件之外,还有另一种方法吗?将第一部分添加到新行然后第二部分,因为这感觉有点极端?

谢谢

【问题讨论】:

标签: java file


【解决方案1】:

在 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”。显然路径和文件记录为 1.6+,但我使用的是 Java 版本 1.7,所以它应该可以正常工作吗?我真的不明白
  • 即便如此,我仍然在我的 IDE 中看到一个错误,但代码运行,所以我将忽略它非常感谢!
  • 欢迎 :) 我没有运行 InteliJ(我自己运行 Eclipse),但我猜它与你的 IDE 有关。
  • 我怎样才能扩展它,以便我可以在具有特定字符串的行之前添加一行,例如,在包含 line 4 的行之前添加 new line
【解决方案2】:

您可以将您的文件读入ArrayList,您可以在任意位置添加元素并操作所有元素及其数据,然后您可以再次将其写入文件中。

PD:你不能直接在文件中添加一行,你只是可以读写/追加数据,你必须在内存中操作数据,然后再写入。

如果这对你有用,请告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2022-01-15
    • 2018-11-25
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多