如何通过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_EXISTING
和WRITE
选项。换句话说,它 打开文件进行写入,如果文件不存在则创建文件,或者 最初将现有的常规文件截断为0
【讨论】:
【参考方案2】:您想同时使用 StandardOpenOption.TRUNCATE_EXISTING 和 StandardOpenOption.CREATE 选项:
Files.write(path, content.getBytes(),
StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING );
【讨论】:
以上是关于如何通过java nio writer覆盖文件?的主要内容,如果未能解决你的问题,请参考以下文章