【问题标题】:Modify existing line in file - Java [duplicate]修改文件中的现有行 - Java [重复]
【发布时间】:2014-01-15 13:40:07
【问题描述】:

我需要一些帮助或代码示例来更新现有行。

文件内容:

Heinrich: 30
George: 2020
Fred: 9090129

假设我想将 George 的值更新(写入)为 300,我将如何实现?

编辑:还是只使用 YAML 会更好?

谢谢。

【问题讨论】:

  • 我建议您阅读有关文件处理的更多信息。这样做很常规,您不会想要现成的答案,而是自己尝试一下
  • 要在这里获得帮助,您应该展示您的尝试。
  • 如果替换内容的字节数与原始内容完全相同,那么您可以使用 RandomAccessFile 替换它,否则您真正能做的就是读取文件行行并将修改后的文本写入新文件。
  • 您不能更改单行,因为它会更改文件的大小。您需要覆盖整个文件。
  • @Magnilex 我基本上已经尝试过与此问题相关的大多数主题,甚至尝试过自己。

标签: java file text-processing


【解决方案1】:

这是一种方法,试试吧。在此示例中,文件为 C:/user.txt,我将 George 的值更改为 1234

public class George {
    private static List<String> lines;

    public static void main (String [] args) throws IOException{
        File f = new File("C:/user.txt");
        lines = Files.readAllLines(f.toPath(),Charset.defaultCharset());
        changeValueOf("Georges", 1234); // the name and the value you want to modify
        Files.write(f.toPath(), changeValueOf("George", 1234), Charset.defaultCharset());
    }

    private static List<String> changeValueOf(String username, int newVal){
        List<String> newLines = new ArrayList<String>();
        for(String line: lines){
            if(line.contains(username)){
                String [] vals = line.split(": ");
                newLines.add(vals[0]+": "+String.valueOf(newVal));
            }else{
                newLines.add(line);
            }

        }
        return newLines;
    }
}

这是一个可行的解决方案,但我认为还有其他更有效的方法。

【讨论】:

  • 工作,谢谢!
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2014-10-20
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 2017-07-13
  • 2022-12-14
相关资源
最近更新 更多