2013-03-09 3 views
1

타사 라이브러리를 실행 중이며 zip 파일을 임시 디렉토리에 다운로드하고 압축을 푼 다음 그러나 나는 .tmp로하는 java.io.tmpdir을 설정하면java.nio.Files.move() - OS X에서 DirectoryNotEmptyException

java.nio.file.DirectoryNotEmptyException: /var/folders/j_/1v53z7q15v51wyb00jzht_ch0000gn/T/vertx-68e24a9e-ee15-4b49-a796-7176714865ec 
    at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:491) 
    at sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:261) 
    at java.nio.file.Files.move(Files.java:1345) 
    ... 

(그리고 .TMP 디렉토리를 만들 : 나는 기본적으로 시스템 속성을 떠날 때 마지막 디렉토리에 임시 디렉토리는 ... 어떤 이유로, 이것은 실패 내 작업 디렉토리에서), 그것은 작동합니다!

sudo를 사용하면이 또한 작동하지 않습니다.

이것은 정말 화를 냈습니다 ... OS X에서이 작업을하려면 어떻게해야합니까?

> java -version 
    java version "1.7.0_17" 
    Java(TM) SE Runtime Environment (build 1.7.0_17-b02) 
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) 

> uname -a 
    Darwin daryl-teos-macbook-pro.fritz.box 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64 

감사의에서 다음을 감안할 때 대릴

답변

2

Java API DocsFiles.move에 대한 : 빈이 필요하지 않은 경우 다음 디렉토리가 이동하지 않는 디렉토리를 이동하기 위해 호출

디렉토리에서 항목을 이동합니다. 예를 들어, 동일한 FileStore에서 디렉토리의 이름을 바꾸면 대개 디렉토리의 항목을 이동할 필요가 없습니다. 디렉토리 이동시 엔트리를 이동해야하므로이 메소드는 실패합니다 (IOException을 throw하여). 파일 트리를 이동하려면 디렉터리 이동이 아닌 복사가 필요할 수 있으며이 작업은 Files.walkFileTree 유틸리티 메서드와 함께 copy 메서드를 사용하여 수행 할 수 있습니다.

이것은이 기능이 네트워크 또는 다른 FileStores를 통해 파일을 이동하도록 설계되지 않았 음을 의미합니다. 그것은 당신이 tmp 위치를 바꿀 때 당신을 위해 작동합니다. 왜냐하면 단순히 이름 바꾸기를하고 물리적 인 이동을하지 않기 때문입니다.

'최종 디렉토리'가 어떻게 선택되었는지는 언급하지 않았지만 사용자가 제어하는 ​​경우 로컬 위치 여야하는 것처럼 보입니다.

+0

그래, 바로 그거야. 나는 작업이 볼륨을 가로 질러 파일을 옮길 수 있도록 요청했다. –