如何通过java nio writer覆盖文件?

时间:2013-11-05 16:38:46

标签: java io nio java-io

我尝试编写文件如下:

String content = "Test File Content";
  • 我的用法如下:Files.write(path, content.getBytes(), StandardOpenOption.CREATE);

如果文件未创建,则创建文件并写入内容。但是如果文件可用,则文件内容为Test File ContentTest File Content,如果代码运行重复,则文​​件内容为Test File ContentTest File ContentTest File Content ...

  • 我用过:Files.write(path, content.getBytes(), StandardOpenOption.CREATE_NEW);

如果文件未创建,则创建文件,而不是如下所示:

  

java.nio.file.FileAlreadyExistsException:   /家庭/ gyhot /项目/索引/ ivt_new /目标/测试类/ test_file里面     在   sun.nio.fs.UnixException.translateToIOException(UnixException.java:88)     在   ...

如何通过java新I / O覆盖文件?

2 个答案:

答案 0 :(得分:61)

您希望在没有任何OpenOption参数的情况下调用该方法。

Files.write(path, content.getBytes());

来自Javadoc:

  

options参数指定如何创建或打开文件。   如果没有选项,那么此方法就像CREATE一样工作   存在TRUNCATE_EXISTING和WRITE选项。换句话说,它   打开文件进行写入,如果文件不存在则创建文件,或者   最初将现有的常规文件截断为0

答案 1 :(得分:35)

您希望同时使用StandardOpenOption.TRUNCATE_EXISTING和StandardOpenOption.CREATE选项:

Files.write(path, content.getBytes(),
         StandardOpenOption.CREATE,
         StandardOpenOption.TRUNCATE_EXISTING );