2011-02-15 11 views
12

파일을 java로 복사하고 새 폴더로 이동하려고합니다. 이것은 내가 사용 해본 코드이지만 "지정된 디렉토리에서 (액세스가 거부되었습니다)"라는 오류 메시지가 항상 나타납니다. 이 문제를 해결할 수있는 방법이나 파일을 복사하는 더 좋은 방법이 있습니까? 감사Java에서 파일을 복사하는 방법

try{ 
      File f1 = new File(fpath); 
      File f2 = new File("C:/users/peter/documents/foldertest2/hats"); 
      InputStream in = new FileInputStream(f1); 

      //For Append the file. 
      //OutputStream out = new FileOutputStream(f2,true); 

      //For Overwrite the file. 
      OutputStream out = new FileOutputStream(f2); 

      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = in.read(buf)) > 0){ 
      out.write(buf, 0, len); 
      } 
      in.close(); 
      out.close(); 
      System.out.println("File copied."); 
     } 
     catch(FileNotFoundException ex){ 
      System.out.println(ex.getMessage() + " in the specified directory."); 
      System.exit(0); 
     } 
     catch(IOException e){ 
      System.out.println(e.getMessage());  
     } 

업데이트 : 폴더 권한을 확인하고 모든 사용자에 대해 모두 열려 있고 내

+0

는 소리. 읽으려고하는 파일의 소유자 또는 작성하려는 디렉토리에 대해 충분한 권한을 부여 받도록 요청하는 것이 좋습니다. – duffymo

+0

질문 목록 : fpath는 어떻게 생겼습니까? 모자가 있습니까?그것은 디렉토리입니까? – josefx

+0

fpath is = "C :/users/peter/desktop/hat3", 모자는 존재하며 내 문서 폴더의 폴더 "foldertest2"에있는 폴더입니다. 내가 다른 폴더를 시도하고 여전히 작품을 나던 – Peter

답변

2

편집 업, 두 번째 시도를 엉망 폴더를 파일 인 것처럼 처리하고 실패합니다.

3

내가이 문제를 해결할 수있는 방법이나 파일을 복사 할 수있는 더 나은 방법이 있나요 ? 이 옵션을 경우

, 나는 당신이 Java version 7로 이동하고 Path.copyTo 방법을 사용하는 것이 좋습니다.

이 경로에있는 파일을 대상 위치로 복사하십시오. [...]

그렇지 않으면 최소한 NIO 패키지와 FileChannels을 사용하는 것이 좋습니다.

0

이 예외가 발생하면 액세스가 실제로 거부됩니다. 즉, 지정된 디렉토리 나 파일에 쓸 수있는 권한이 없습니다. 먼저 확인하십시오. 예를 들어 지정된 디렉토리에 파일을 수동으로 작성하십시오. 다른 누군가의 홈 디렉토리에 파일을 만들려고합니까? 또는 귀하의 자바 프로그램이 다른 사용자로 실행 중입니까? foldertest2는 어떻습니까? 그것은 존재하고 쓸 수 있습니까? 거기에 파일을 복사 해보십시오.

그리고 마지막 팁. 파일을 복사 할 때, IOUtils.copy() (자카르타 커먼즈)을 사용하는 것이 좋습니다. 나는 그것을 많이 사용한다. 거의 완벽하게 구현했지만 코드 한 줄만 작성해야합니다.

36

아파치 코 몬즈 IO는 또 다른 방법으로, 특별히 FileUtils.copyFile();으로 처리 할 수 ​​있습니다.

0

흠 창문에서 실행하려고하는 것처럼 보입니다./대신 경로에 \를 사용하면 안됩니다.

AlexR은 쓰기를 시도하는 디렉토리에 대한 권한을 확인한다고 말했습니다. 당신의 FileOutputStream에에게 유효한 파일 이름을 지정 단지가 액세스하려고에만 폴더 이름으로 대상 경로 C:/users/peter/documents/foldertest2/hats/hat3에 파일의 이름을 추가해야

:

관련 문제