Java复制目录慢
Java copy directory slow
我在 C 盘上有几个大小 >2.5GB 的文件夹,它是 SSD。通过 Java,我将这些文件夹移动到另一个共享驱动器,这也发生在使用 FileUtils.copyDirectoryToDirectory(sourceDir, destiDir);
的 SSD 上
与 windows 默认移动选项(需要 5 分钟)相比,它工作正常但速度较慢(需要约 30 分钟)。我四处搜索,看看是否有更好的方法来提高通过我的 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());
}
我在 C 盘上有几个大小 >2.5GB 的文件夹,它是 SSD。通过 Java,我将这些文件夹移动到另一个共享驱动器,这也发生在使用 FileUtils.copyDirectoryToDirectory(sourceDir, destiDir);
与 windows 默认移动选项(需要 5 分钟)相比,它工作正常但速度较慢(需要约 30 分钟)。我四处搜索,看看是否有更好的方法来提高通过我的 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());
}