我在C驱动器上有几个大小> 2.5GB的文件夹,即SSD。通过Java,我将这些文件夹移至另一个共享驱动器,该驱动器也使用FileUtils.copyDirectoryToDirectory(sourceDir, destiDir);
与Windows默认移动选项相比,它的工作正常,但缓慢(花费约30分钟),该选项需要5分钟。我四处搜索,看看是否有更好的方法可以通过我的Java程序提高移动目录的性能,但没有运气。有人可以建议我移动这些目录的最佳方法吗?
好吧,这就是我所做的
使用Java中的Robocopy命令在两个位置之间复制目录。用〜9GB文件测试,并能够在〜9分钟内复制。以下是代码片段
String sourceFolder = new File("C:\test\robocopytest\source\20170925T213857460").toString();
String destFolder = new File("C:\test\robocopytest\destination\20170925T213857460").toString();
StringBuffer rbCmd = new StringBuffer();
if ((sourceFolder != null) && (destFolder != null))
{
if (sourceFolder.contains(" ")) {
if (sourceFolder.startsWith("\")) {
sourceFolder = "/"" + sourceFolder.substring(1) + "/"";
} else {
sourceFolder = """ + sourceFolder + """;
}
}
if (destFolder.contains(" ")) {
if (destFolder.startsWith("\")) {
destFolder = "/"" + destFolder.substring(1) + "/"";
} else {
destFolder = """ + destFolder + """;
}
}
rbCmd.append("robocopy " + sourceFolder + " " + destFolder);
Process p = Runtime.getRuntime().exec(rbCmd.toString());
}