可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现
复制代码代码如下:
包 archiver.util;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.Arrays;
导入 java.util.Iterator;
导入java.util.List;
公共类 FileIterator 实现 Iterator<File>, Iterable<File> {
私有 Iterator<String> 迭代器;
私有列表<String>路径;
私有列表<文件>目录;
公共 FileIterator(List<String> 路径) {
this.paths = new ArrayList<String>(paths);
this.dirs = new ArrayList<File>();
this.iterator = this.paths.iterator();
}
公共文件下一个(){
文件文件=空;
如果(hasNext()){
文件 = 新文件(迭代器.next());
if (file.isDirectory()) {
dirs.add(文件);
}
}
返回文件;
}
公共布尔 hasNext() {
if (!iterator.hasNext()) {
路径.clear();
for (文件目录: 目录) {
for (字符串名称: dir.list()) {
paths.add(dir.getPath()+File.separator+name);
}
}
目录.clear();
if (paths.size() == 0) {
返回假;
}
迭代器 = paths.iterator();
}
返回真;
}
@覆盖
公共无效删除(){
抛出新的 UnsupportedOperationException();
}
@覆盖
公共迭代器<文件> iterator() {
返回这个;
}
公共静态无效主(字符串[] args){
FileIterator iter = new FileIterator(Arrays.asList("."));
for(文件文件:iter){
System.out.println(文件);
}
}
}