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

如何使用Java替换文本文件中的一行?,java,text,replace,Java,Text,Replace,我有一个文本文件,其中包含以“---”分隔的各种键值对。 下面是我到目前为止的代码 File file = new File("C:\\StateTestFile.txt"); BufferedWriter out = new BufferedWriter(file.getAbsolutePath()); BufferedReader br = new BufferedReader(new FileReader(file)); St

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

        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();
我想做的是读取这个文本文件,并用我指定的内容替换特定行的值。因此,我想找到“content_style”行,并将“posh”替换为“dirty”

我如何才能做到这一点?

只需使用:

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

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

  • 打开源文件进行读取
  • 打开要写入的目标文件
  • 读取源文件中的每一行,使用
    replaceAll
    ,然后将其写入目标文件
  • 关闭两个文件
  • 保留键值语义的替代方法:

  • 打开源文件进行读取
  • 打开要写入的目标文件
  • 将源文件中的每一行拆分为键和值对。如果密钥等于
    “content\u style”
    ,则将密钥和
    “dirty”
    写入目标文件。否则,写入键和值
  • 关闭两个文件

  • 最后,删除旧文件并在旧文件的基础上重命名新文件。如果您要经常进行键值操作,并且不想一直写出新文件,那么使用数据库可能是值得的。寻找答案。

    你能问一个更具体的问题吗?我们不是来帮你做作业的。有关更多信息,请参阅。请参阅
    String
    的方法
    replace
    replaceAll
    。后者也可以使用正则表达式。您可以完全按照描述执行此操作:读取文件、更改字符串、写入文件。如果你需要更详细的答案,你需要展示一些努力,比如你迄今为止所做的尝试。我在这里看到的其他有用的方法是
    String.split
    String.contains
    @Grice我已经添加了我目前拥有的代码。希望它更清晰。谢谢。这似乎是我需要的方法。我原以为读写同一个文件会很容易,但行实际上并没有被保存回文件。这也很有效。在错误中,我尝试将其直接传递到行,这将覆盖替换的文本。