2012-02-10 24 views
8

我想將文件從一個目錄複製到另一個使用Java和apache org commons的FileUtils類。Java - 使用FileUtils和copyFileToDirectory將文件複製到另一個目錄 - 不起作用 - ?

我寫了一個快速的java程序來測試我的本地系統。這是代碼。該文件存在,但該文件複製到另一個目錄不起作用。我錯過了什麼?某處是否存在某種不恰當的語法?

import org.apache.commons.io.FileUtils; 
import java.io.File; 

class MoveFile { 

    public static void main(String[] args) { 
     MoveFile myobj = new MoveFile(); 
     myobj.moveTheFile(); 
    } 

    public void moveTheFile() { 
     try { 
      File destDir = new File("C:\\Folder1\\temp2"); 
      File srcFile = new File("C:\\Folder1\\temp\\card.png"); 
      FileUtils.copyFileToDirectory(srcFile, destDir); 
     } catch(Exception e) { 
     } 
    } 

} 
+2

這是什麼意思不起作用?任何錯誤?數據未被複制? – kosa 2012-02-10 22:00:33

+0

初始文件是否存在?目的地目錄是否存在?當它失敗時,例外說明什麼? – 2012-02-10 22:24:15

+0

文件和目錄都存在。沒有例外記錄。 – katura 2012-02-11 18:25:45

回答

9

複製您的錯誤,並且只有在程序沒有權限寫入目標文件夾時它纔會失敗。即使捕獲一個可拋出和打印堆棧跟蹤也不顯示任何信息,並且該方法非常安靜......如果該文件夾不存在,則該方法會創建該文件,以免忽略可能的更正。

檢查目標文件夾中的寫入權限

+0

我忽略了目標目錄變量中的一個錯誤 - 它應該是Folder1/temp/temp2。該目錄具有「只讀」權限,所以我改變了這一點。現在測試程序起作用。感謝您的幫助。 – katura 2012-02-11 18:40:56

2

做燕子例外從來不是一個好主意。在您的異常處理機制中執行e.printstacktrace()以獲取更多信息。由於您沒有指定任何其他信息,因此首先想到的是如果您使用的是Windows Vista或更高版本,通常在將項目直接放入您的C:\目錄中時,它會詢問您是否需要管理員同意。

若要查看是否有這個問題,我建議您在其他目錄(如My Documents或其他目錄)中測試此項,否則請禁用UAC。

1

destDir.mkdirs(); 

FileUtils.forceMkdir(destDir); 

創建目錄temp2第一。

+0

temp2目錄已在系統上創建,因此不需要使目錄。 – katura 2012-02-11 18:26:13

相關問題