如何根据其中的值更新文本文件

Posted

技术标签:

【中文标题】如何根据其中的值更新文本文件【英文标题】:How to update a text file based on values within it 【发布时间】:2014-06-07 02:31:12 【问题描述】:

我想根据该行的特定值(id)编辑 csv 文件的某些值(行值)。我能够读取和写入(附加)其中的值,但无法弄清楚如何编辑和删除它们。

这是我正在执行的读取文件和附加值的一小段代码:

FileWriter writer = new FileWriter("file.csv", true);
try 
    FileInputStream fstream = new FileInputStream("file.csv");
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
    String strLine;              
    while ((strLine = br.readLine()) != null) 
        String[] fields = strLine.split(",");
        if (fields[1].equals("value") 
            fields[1] = "different value";
        
        writer.append(fields);
    
    catch(...)

但我不知道如何将值写回文件中的同一位置。

【问题讨论】:

要编辑和删除,您需要读取整个文件(以某种格式存储,即对象的 ArrayList),清除 .csv 文件,并用修改后的值将其重写。 清除是指删除吗?或以任何其他方式。 删除它会更容易,您可以通过创建文件的实例来简单地做到这一点, (File file = new file(); 然后调用 file.delete 您可以使用writer.print(""); 来完成。然后遍历你的行并按照你已经在做的追加。 【参考方案1】:

很遗憾,您无法同时打开一个文件进行读取和写入。在打开文件进行写入之前,您需要阅读并关闭它。

可能的解决方案是:

将输出写入其他文件,完成后替换原始文件

将所有输出保存在内部变量中,然后在完成读取后关闭文件并重新打开以进行写入。

【讨论】:

以上是关于如何根据其中的值更新文本文件的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中读取文本文件中的数字和字母

如何检查一个文件的值是不是包含在另一个文本文件中? (perl 脚本)

java文件中的setText如何更新fxml文件中的文本字段?

如何更新TD文本框附近的值?

更新 apache parquet 文件中的值

如何更新主表当前行的输入类型文本中的值从模态窗口表中获取值