56

我尝试文件编写器如下:

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: /home/gyhot/Projects/indexing/ivt_new/target/test-classes/test_file at sun.nio.fs.UnixException.translateToIOException(UnixException.java:88) at ...

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

4

2 回答 2

96

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

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

来自 Javadoc:

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

于 2013-11-05T16:42:37.867 回答
47

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

Files.write(path, content.getBytes(),
         StandardOpenOption.CREATE,
         StandardOpenOption.TRUNCATE_EXISTING );
于 2013-11-05T16:40:29.360 回答