2012-02-10 15 views
8

JavaとFileUtilsクラスのapache orgコモンを使用して、あるディレクトリから別のディレクトリにファイルをコピーしたいとします。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

+0

初期ファイルは存在しますか?宛先ディレクトリは存在しますか?例外が発生したときに例外は何をしますか? –

+0

ファイルとディレクトリの両方が存在します。例外は記録されていません。 – katura

答えて

9

エラーをレプリケートし、プログラムに宛先フォルダへの書き込み権限がない場合にのみ失敗します。 throwableを捕捉してstacktraceを印刷しても情報は表示されず、メソッドは静かです。フォルダが存在しない場合、メソッドはそれを作成してその可能な修正を無視します。

宛先フォルダの書き込み権限を確認してください

+0

私は宛先ディレクトリ変数の1つのエラーを見落としました - Folder1/temp/temp2だったはずです。ディレクトリには「読み取り専用」アクセス許可があるので、変更しました。これでテストプログラムが動作します。ご協力ありがとうございました。 – katura

2

スワロー例外を実行することは決してお勧めできません。詳細については、例外処理メカニズムでe.printstacktrace()を実行してください。あなたは他の情報を指定していないので、まずWindows Vistaを使用している場合は、C:\ディレクトリにアイテムを直接置くときに管理者の同意を得ることが尋ねられます。

これが問題であるかどうかを確認するには、My Documentsなどの他のディレクトリでこれをテストするか、UACを無効にすることをおすすめします。

1

最初のディレクトリtemp2を作成する

destDir.mkdirs(); 

または

FileUtils.forceMkdir(destDir); 

を行います。

+0

temp2ディレクトリはすでにシステム上に作成されているため、ディレクトリを作成する必要はありません。 – katura

関連する問題