可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现
复代码代码如下:
패키지 archiver.util;
java.io.파일 가져오기;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
java.util.List 가져오기;
공용 클래스 FileIterator는 Iterator<File>, Iterable<File> {를 구현합니다.
개인 반복자<String>반복자;
개인 목록<String>경로;
개인 목록<파일>dirs;
공개 FileIterator(List<String> 경로) {
this.paths = new ArrayList<String>(경로);
this.dirs = new ArrayList<File>();
this.iterator = this.paths.iterator();
}
공개 파일 next() {
파일 파일 = null;
if (hasNext()) {
파일 = 새 파일(iterator.next());
if (file.isDirectory()) {
dirs.add(파일);
}
}
파일 반환;
}
공개 부울 hasNext() {
if (!iterator.hasNext()) {
paths.clear();
for (파일 디렉토리 : 디렉토리) {
for (문자열 이름 : dir.list()) {
paths.add(dir.getPath()+File.separator+name);
}
}
dirs.clear();
if (paths.size() == 0) {
거짓을 반환;
}
반복자 = paths.iterator();
}
사실을 반환;
}
@보수
공개 무효 제거() {
새로운 UnsupportedOperationException()을 던져라;
}
@보수
공개 Iterator<파일> iterator() {
이거 돌려줘;
}
공개 정적 무효 메인(String[] args) {
FileIterator iter = new FileIterator(Arrays.asList("."));
for (파일 파일 : iter) {
System.out.println(파일);
}
}
}