如何在文件的特定行之后插入文本

时间:2013-07-04 14:54:23

标签: java text io

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

我只发现我可以在文件末尾附加一个文本 喜欢

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

可在此帖How to append text to an existing file in Java

找到

但没有提及行号或某事。

3 个答案:

答案 0 :(得分:5)

由于文件系统的工作方式,无法在文件中间插入文本。它们实现操作以修改文件的数据块,以及添加和删除文件末尾的块。由于inherent complexities of these operations,他们未实现的是在其他任何地方添加或删除数据块。

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

答案 1 :(得分:1)

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

答案 2 :(得分: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);                                                     
}