티스토리 뷰

출처: http://m.blog.naver.com/skykingkjs/150172634507


사실 directory는 통채로 옮기거나, 삭제하거나, 복사할수 없다.

 

안이 비어있어야만 가능한데.

 

실제 삭제의 구현은

 

디렉토리안의 모든 데이터를 지우고 디렉토리를 지우는 방법이다.

 

만약 디렉토리안에 디렉토리가 있으면 그안에있는것도 처리해야한다. (재귀적호출이 필요함..)

 

 

그래서 NIO는 이것을 지원하기위해 FileVisitor 라는 인터페이스와

 

그 짝 Files.walkFileTree(Path start, FIleVisitor visitor) 함수를 지원해준다.

 

 

후.. 그냥 알아서 다지워주는건 없나 ^^...

 

아무튼 저 함수를 실행하면

 

start위치내부의 모든 파일, 디렉토리를 하나하나 들어가면서 visitor인터페이스에 정의된 명령에따라

 

처리한다. Visitor에서 구현해줘야 하는 매소드는

 

visitFIle(T file, BasicFileAttributes arrts) : 파일에 접근했을떄 해야할것.

 

preVisitDirectory(T dir, BasicFileAttributes arrts) : 폴더에 접근햇을때 해야할것.

 

postVisitDirectory(T dir, BasicFileAttributes arrts)  :폴더에서 떠날떄 해야할것.

 

                                                         A/B/C 구조면 pre A-> pre B -> pre C - >

                                                          post C -> post B... 알겟죠?

 

visitFIleFailed(T file, IOException err) : 파일에 접근 실패햇을떄.해야할것

 

네개의 함수는 리턴값이 FIleVisitResult 인데.

걍 상수라고보면됨 리턴값에 따라 walkFileTree가 행동함.

 

Continue, : 계속탐색. 일반적으로 이값을 리턴함.

Terminate : 탐색 종료. 전부다탐색하면 자동으로 종료되고, 만약 머 파일을 찾거나햇을때

                이걸리턴하게하면 그시점부터 탐색을 종료함

SKIP_SUBTREE : 하위 디렉토리 검사를 안함.

SKIP_SIBLINGS : 형제 파일들 검사안함.


댓글
공지사항
최근에 올라온 글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함