2016-12-15 75 views
1

我想將文件從一個目標複製到另一個目標。我無法理解錯誤發生的原因。任何幫助表示讚賞。無法使用FileUtils複製文件

public class FileSearch { 

    public void findFiles(File root) throws IOException { 

     File[] listOfFiles = root.listFiles(); 
     for (int i = 0; i < listOfFiles.length; i++) { 
      String iName = listOfFiles[i].getName(); 
      if (listOfFiles[i].isFile() && iName.endsWith(".tif")) { 
       long fileSize = listOfFiles[i].length(); 

       long sizeToKb = fileSize/1024; 

       File copyDest = new File("C:\\Users\\username\\Desktop\\ZipFiles"); 

       if (fileSize <= 600000) { 
        System.out.println("|" + listOfFiles[i].getName().toString() + " | Size: " + sizeToKb+" KB"); 
        FileUtils.copyFile(listOfFiles[i], copyDest); 
       } 

      } else if (listOfFiles[i].isDirectory()) { 
       findFiles(listOfFiles[i]); 
      } 
     } 
    } 

我收到以下錯誤Exception in thread "main" java.io.IOException: Destination 'C:\Users\username\Desktop\ZipFiles' exists but is a directory

+0

ZipFiles是一個目錄?你想訪問該文件夾中的所有文件嗎? –

+2

這個錯誤信息很清楚問題是什麼...... – JonK

+0

copyFile需要一個文件位置和一個文件目的地,其中文件目的地是新文件的絕對路徑。 – Compass

回答

5
File srcFile = new File("/path/to/src/file.txt"); // path + filename  
File destDir = new File("/path/to/dest/directory"); // path only 
FileUtils.copyFileToDirectory(srcFile, destDir); 

嘗試copyFileToDirectory(srcFile, destDir),你必須提供與文件名的源文件絕對路徑和絕對路徑到目標目錄。

此外,請確保您具有將文件複製到目標的寫入權限。我總是在Linux系統上不知道該如何實現這一點,同樣的,你應該對Windows有一定的管理員權限,或者能夠寫入文件的類似角色。

2

你想FileUtils.copyFileToDirectory(srcFile, destDir)

爲什麼會發生錯誤? FileUtils.copyFile用於將文件複製到新位置。從文檔:

此方法將指定的源文件的內容複製到指定的目標文件。如果目錄文件不存在,則會創建保存目標文件的目錄。如果目標文件存在,則此方法將覆蓋它。

這裏,目的地存在,但不是文件;而是一個目錄。您無法用文件的內容覆蓋目錄