2011-12-12 3 views
1

최근 이름이 특정 텍스트를 포함하는 일부 파일/디렉토리를 찾기 위해 일부 Java 소프트웨어를 만들고 있습니다. 다른 이름으로 이름이 변경됩니다. Files.walkFileTree을 사용하여 디렉토리를 탐색하고 일치하는 파일/디렉토리가 하나 발견되면 File.renameTo 메소드를 사용하여 이름이 바뀝니다.디렉토리 및 일부 파일/하위 디렉토리의 이름 바꾸기

하지만 하나의 하위 디렉토리의 이름이 변경되면이 하위 디렉토리 아래의 모든 이름 변경 작업이 실패하면 문제가 발생합니다.

나는 그것이이 하위 디렉토리가 열린 것으로 표시되어서 파일/폴더를 변경할 수 없기 때문에 발생했다고 생각합니다. 그걸 해결할 생각이야?

답변

1

이것은 '맨 아래 맨 처음부터 맨 마지막까지'의 이름을 바꾸면 해결할 수 있습니다.

3

모든 이름이 먼저 결정된 다음이 이름이 포함 된 파일의 이름을 바꾸기 전에 이름을 변경하면이 문제가 발생할 수 있습니다.

이 문제를 해결하려면 파일 이름을 가장 먼저 바꾸고 (파일 이름을 변경 한 후에 만 ​​디렉토리 이름 바꾸기) 또는 파일 목록 만 빌드하면됩니다.

0

나는 walkFileTree의 의미가 무엇일까 두려워. 앨런 베이트먼, NIO 2의 기술 지도자는 말했다 :

walkFileTree 유틸리티 방법은 디렉토리 스트림에서 얻은 반복자의 를 사용하게 내부 반복자입니다. 이러한 반복자는 (DirectoryStream에서) "weakly consistent"로 지정되어 있으며 은 디렉토리를 연 후 해당 디렉토리에 대한 업데이트를 반영하지 않을 수 있습니다. ... 어쨌든 차이점은 기본 구현 이 매우 다르다는 것입니다.

관련 문제