在我的Java 7应用程序中,我需要将sourceFolder
中的所有文件和目录移动到另一个destinationFolder
。我不知道这两个文件夹是在同一个文件系统还是分区,因为两者都可以在运行时由用户指定。
由于要移动的文件和目录可能非常大(一些GB),我正在寻找一种有效的移动方式。因此,只有在sourceFolder
和destinationFolder
不在同一文件系统上时才应复制它们。理想情况下,如果可能的话,同一文件系统上的移动操作应该是重命名操作。
该应用程序用于Windows和Linux系统。
我知道一些related Java 7 functionalities,但是,如果它不是空的话,他们不允许将文件夹的所有内容移动到其他地方,这在我的情况下是必需的。我还发现了Apache Common's FileUtils类,看起来很有希望。但是,如果sourceFolder
和destinationFolder
不在同一文件系统上,则其文档说明应该执行“复制和删除”操作。
所以我的问题是:当我使用FileUtils
课程时,如何以跨平台的方式检查sourceFolder
和destinationFolder
的文件系统?
答案 0 :(得分:1)
我假设您指的是FileUtils.moveFile()
。
moveFile
注意源和目标位于不同目录的情况。它的作用是尝试使用File.renameTo
,如果失败,它会尝试复制文件。 (见source code。)简而言之,你不需要亲自检查......
但是在回答您的实际问题时,File
或Apache FileUtils
都没有
如果两个目录位于同一文件系统上,则提供 test 的方法。但是(我认为)你可以通过类似这样的方式使用Java 7功能来实现它:
Path path1 = new File(str1).toPath();
Path path2 = new File(str2).toPath();
if (path1.getFileSystem().equals(path2.getFileSystem()) {
...