首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.nio.file Files.move()正在复制而不是移动

java.nio.file Files.move()正在复制而不是移动
EN

Stack Overflow用户
提问于 2016-01-12 00:44:00
回答 4查看 5.6K关注 0票数 4

我试图使用Java Files.move方法移动目录。它确实将目录内容复制到新位置,但它保留了旧目录。我认为这是复制操作,而不是移动操作。

知道为什么会这样吗?这是我的代码:

代码语言:javascript
复制
Path source = FileSystems.getDefault().getPath("C:\\test-source");
Path destination = FileSystems.getDefault().getPath("C:\\test-destination");
try {
    System.out.println("Moving files ...");
    Files.move(source, destination, StandardCopyOption.ATOMIC_MOVE);
    System.out.println("Done.");
} catch (IOException e) {
    System.out.println("Moving failed: " + e.toString());
}

同样,目标目录将显示其所有内容,但源文件夹仍然处于位置。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-12 18:38:03

结果证明代码是正确的。但是没有删除源文件夹,因为另一个进程仍在使用该文件夹。当我删除另一个进程(下载到源文件夹的AWS S3目录)时,移动就会如期而至。

票数 1
EN

Stack Overflow用户

发布于 2016-01-12 00:54:24

来自

ATOMIC_MOVE是一个文件操作。

代码语言:javascript
复制
public static final StandardCopyOption ATOMIC_MOVE

将文件作为原子文件系统操作移动。

试试StandardCopyOption.REPLACE_EXISTING

票数 2
EN

Stack Overflow用户

发布于 2017-05-08 13:18:57

在尝试提交IndexWriter时,我在Apache中遇到了这个问题。问题是在目录上打开了一个IndexSearcher,导致了一个java.nio.file.atomicmovenotsupportedexceptionIndexReader构造函数参数是由DirectoryReader.open(Directory directory)提供的。更改为使用重载DirectoryReader.open(IndexWriter writer)解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34733765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档