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은 파일 위치와 파일 대상을 가져옵니다. 여기서 파일 대상은 새 파일의 절대 경로입니다. – 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)을보십시오.

또한 파일을 대상에 복사 할 수있는 쓰기 권한이 있는지 확인하십시오. 난 항상 리눅스 시스템에있어 어떻게 달성 해야할지 모르겠다. 비슷하게 당신은 윈도우즈에서 관리자 권한을 가지거나 파일을 쓸 수있는 유사한 역할을해야한다.

2

당신은

왜 오류가 발생 FileUtils.copyFileToDirectory(srcFile, destDir)을 원하는 다음과 같은 오류가? FileUtils.copyFile은 파일을 새 위치로 복사하는 데 사용됩니다. 문서에서 :

이 방법은 지정된 소스 파일의 내용을 지정된 대상 파일에 복사합니다. 대상 파일이있는 디렉토리가 존재하지 않으면 작성됩니다. 대상 파일이 있으면이 메서드는 대상 파일을 덮어 씁니다.

여기에는 대상이 있지만 파일이 아닙니다. 오히려 그것은 디렉토리입니다. 디렉토리파일의 내용으로 덮어 쓸 수 없습니다.