2

我有一个 250 行的文件。我想在第 128 行之后插入一些文本。

我只发现我可以在文件末尾附加一个文本,比如

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("outfilename", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    //oh noes!
}

可以在这篇文章如何将文本附加到 Java 中的现有文件中找到

但没有提及行号或某事。

4

3 回答 3

5

由于文件系统的工作方式,无法在文件中间插入文本。它们实现了修改文件的数据块以及从文件末尾添加和删除块的操作。由于这些操作固有的复杂性,他们没有实现的是在其他任何地方添加或删除数据块。

您要做的就是将前 125 行复制到一个新文件中,添加您要添加​​的内容,然后复制文件的其余部分。如果您愿意,您可以将新文件重命名为旧文件,这样您就不会累积临时文件。

于 2013-07-04T14:59:52.037 回答
1

您可以读取原始文件并将内容写入临时文件并插入新行。然后,删除原始文件并将临时文件重命名为原始文件名。

于 2013-07-04T15:01:34.730 回答
0

以下代码可以帮助您在现有文件的给定位置插入给定字符串:

public static void writeStrToFileAtGivenLineNum(String str, File file, int lineNum) throws IOException { 
    List<String> lines = java.nio.file.Files.readAllLines(file.toPath());                                
    lines.add(lineNum, str);                                                                             
    java.nio.file.Files.write(file.toPath(), lines);                                                     
} 
于 2018-06-26T06:17:16.907 回答