我试图使用Java Files.move方法移动目录。它确实将目录内容复制到新位置,但它保留了旧目录。我认为这是复制操作,而不是移动操作。
知道为什么会这样吗?这是我的代码:
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());
}同样,目标目录将显示其所有内容,但源文件夹仍然处于位置。
发布于 2016-01-12 18:38:03
结果证明代码是正确的。但是没有删除源文件夹,因为另一个进程仍在使用该文件夹。当我删除另一个进程(下载到源文件夹的AWS S3目录)时,移动就会如期而至。
发布于 2016-01-12 00:54:24
来自这
ATOMIC_MOVE是一个文件操作。
public static final StandardCopyOption ATOMIC_MOVE将文件作为原子文件系统操作移动。
试试StandardCopyOption.REPLACE_EXISTING
发布于 2017-05-08 13:18:57
在尝试提交IndexWriter时,我在Apache中遇到了这个问题。问题是在目录上打开了一个IndexSearcher,导致了一个java.nio.file.atomicmovenotsupportedexception。IndexReader构造函数参数是由DirectoryReader.open(Directory directory)提供的。更改为使用重载DirectoryReader.open(IndexWriter writer)解决了问题。
https://stackoverflow.com/questions/34733765
复制相似问题