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

Posted

技术标签:

【中文标题】如何通过java nio writer覆盖文件?【英文标题】:How to overwrite file via java nio writer? 【发布时间】:2013-11-16 15:05:23 【问题描述】:

我尝试如下文件编写器:

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 在 sun.nio.fs.UnixException.translateToIOException(UnixException.java:88) 在 ...

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

【问题讨论】:

【参考方案1】:

您想调用不带任何OpenOption 参数的方法。

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

来自 Javadoc:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何通过java nio writer覆盖文件?的主要内容,如果未能解决你的问题,请参考以下文章

Java IO BIO NIO

Java-IO与NIO

java NIO基础

Java Nio 十Java NIO Files

java变量和方法的覆盖和隐藏(翻译自Java Tutorials)

XML停止覆盖/保存多个条目