如何使用Java替换文本文件中的一行?

时间:2014-12-17 15:11:02

标签: java text replace

我有一个文本文件,其中各种键值对用' - '分隔。 下面是我到目前为止的代码

        File file = new File("C:\\StateTestFile.txt");
        BufferedWriter out = new BufferedWriter(file.getAbsolutePath());
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
           if(line.contains("content_style")) {
               //Write to the line currently reading and save back to the file
           }
        }
        br.close();

        out.close();

我想要做的是阅读此文本文件,并用我指定的内容替换特定行的值。所以id想要找到'content_style'行并用'dirty'替换'posh'。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

只需使用:

 line = line.replaceAll("posh", "dirty"); // as strings are immutable in java

答案 1 :(得分:0)

只有当您确定要替换的字符串与替换它的字符串完全相同的字节长度时,才能在单个文件上就地执行此操作。否则,您无法在单个文件中添加或删除字符,但可以创建新文件。

  1. 打开源文件进行阅读。
  2. 打开目标文件进行书写。
  3. 读取源文件中的每一行,使用replaceAll,并将其写入目标文件。
  4. 关闭这两个文件。
  5. 保留键值语义的备用方法:

    1. 打开源文件进行阅读。
    2. 打开目标文件进行书写。
    3. 将源文件中的每一行拆分为键和值对。如果密钥等于"content_style",请将密钥和"dirty"写入目标文件。否则写下密钥和值。
    4. 关闭这两个文件。
    5. 最后,删除旧文件并将旧文件重命名为旧文件。如果您经常进行键值操作,并且您不想一直写出新文件,那么使用数据库可能是值得的。寻找JDBC driver for SQLite