2016-12-15 10 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はFileの場所とFileの宛先を取ります.File destinationは新しいFileの絶対パスです。 – 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は、ファイルを新しい場所にコピーするために使用されます。ドキュメントから:

このメソッドは、指定されたソースファイルの内容を指定された宛先ファイルにコピーします。宛先ファイルを保持するディレクトリが存在しない場合は作成されます。宛先ファイルが存在する場合、このメソッドはそれを上書きします。

ここで、宛先は存在しますが、ファイルではありません。むしろそれはディレクトリです。ファイルのディレクトリの内容で上書きすることはできません。

関連する問題