【问题标题】:rewrite file instead of recreating a file重写文件而不是重新创建文件
【发布时间】:2014-04-26 07:30:00
【问题描述】:

我有以下一段代码,它允许我重新创建一个包含更新数据的文件。即使我使用“StandardOpenOption.TRUNCATE_EXISTING”选项覆盖旧文件,但我收到一个错误消息,指出该文件已经存在并且不会在其上写入!

File filename = new File("data.txt");
public void writeToFile(char[] data){
    filename.delete();
    Files.write(filename.toPath(), data, StandardOpenOption.TRUNCATE_EXISTING);
}

是否可以不一遍又一遍地删除和重新创建同一个文件来编辑初始文件的数据?

谢谢

EDIT1:这似乎是我的错误。连同“StandardOpenOption.TRUNCATE_EXISTING”,我包括了“StandardOpenOption.CREEATE_NEW”。 这是因为我希望创建该文件以防万一它不存在!怎么可能先尝试编辑它,如果它不存在创建一个新的?

对不起,我最初的错误

【问题讨论】:

  • 你用的是什么语言
  • 我不清楚您要做什么,但是 StandardOpenOption.TRUNCATE_EXISTING 在您打开文件时会截断文件内容,因此您只需删除对 .delete() 方法的调用。
  • 我正在使用 java @Dason
  • @Max 这正是我最初所做的,但是当它尝试写入并且文件已经存在时,我收到了一个错误:java.io.IOException: java.nio.file.FileAlreadyExistsException:数据.txt
  • 这是出乎意料的,因为它显然违背了文档中的内容。你用的是什么JDK版本?

标签: java file rewrite


【解决方案1】:

继续这个(对我有用)的方法是创建一个try{}catch{} 块并在“尝试”中尝试编辑文件,如果它因为不存在而失败,则在“抓住”。

【讨论】:

    【解决方案2】:

    查看 Files 类中 write 方法的 JavaDoc,它说:“默认情况下,该方法会创建一个新文件或覆盖现有文件”,因此您似乎需要做的就是:

    File filename = new File("data.txt");
    
    public void writeToFile(char[] data) throws IOException {
        Files.write(filename.toPath(), data);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多