替换新文本文件中的行

时间:2014-05-23 14:41:23

标签: java replace java.util.scanner printwriter

我有一个包含多行的文本文件。

Line 1
Line 2
Line 3
Line 4
...

我试图用一个新句子代替第3行。

我使用下面的代码,但不是替换它,而是在它旁边添加新句子以及其余的文本。我需要删除它并将新句子放在同一个地方,然后继续写其余的行。我该怎么办?

try {
    PrintWriter out = new PrintWriter(new FileWriter(filenew, true));
    Scanner scanner = new Scanner(file);

    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if (line.contains(line 2)) {        
            line = line.replaceAll("", "new sentence");
        }  
        out.write(line);
        out.write("\n");
    }   

    out.flush();
    out.close();
    scanner.close();
} 
catch (IOException e)  {
    e.printStackTrace();
}

提前致谢!

2 个答案:

答案 0 :(得分:2)

您正在寻找的循环类似于

String targetText = "... the text to search";
String replacement = "The new text";
PrintWriter out = mkPrintWriter(/*...*/);

while (in.hasNextLine()) {
  String line = in.nextLine();
  if (line.equals(targetText)) {
    out.println(replacement);
  } else {
    out.println(line);
  }
}

请注意,out文件是临时资源。处理完毕后,您可以取消链接旧文件并重命名临时文件。

答案 1 :(得分:-1)

更改

line = line.replaceAll("", "new sentence");

line = line.replaceAll(line 2, "new sentence");