2017-09-26 43 views
1

我有幾個文件夾大小> 2.5GB的C盤是SSD。通過Java,我將這些文件夾移動到另一個共享驅動器,這也發生在SSD上使用FileUtils.copyDirectoryToDirectory(sourceDir, destiDir);Java複製目錄慢

它工作正常,但速度較慢(花費約30分鐘),與Windows默認移動選項相比需要5分鐘。我搜索了一下,看看是否有更好的方法來提高通過我的java程序移動目錄的性能,但沒有運氣。有人可以建議我移動這些目錄的最佳方式嗎?

+0

當您說「共享」時,是否暗示目標目錄位於網絡共享上? –

+0

@Ian,是的,它在網絡共享 –

+0

更具體,它是一個NAS(網絡附加存儲) –

回答

0

好的這就是我所做的

在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()); 
     }