2016-12-15 7 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 является абсолютным путем для нового файла. – 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 используется для копирования файла в новое место. Из документации:

Этот метод копирует содержимое указанного исходного файла в указанный файл назначения. Каталог, содержащий файл назначения, создается, если он не существует. Если файл назначения существует, этот метод перезапишет его.

Здесь место назначения существует, но не является файлом; скорее это каталог. Вы не можете перезаписать каталог с содержимым файла.