可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现
复制代码代码如下:
paquete archiver.util;
importar java.io.File;
importar java.util.ArrayList;
importar java.util.Arrays;
importar java.util.Iterator;
importar java.util.List;
la clase pública FileIterator implementa Iterator<Archivo>, Iterable<Archivo> {
iterador privado<String>iterador;
Lista privada<String>rutas;
Lista privada<Archivo>dirs;
FileIterator público (lista <cadena> rutas) {
this.paths = new ArrayList<String>(rutas);
this.dirs = nueva ArrayList<Archivo>();
this.iterator = this.paths.iterator();
}
Archivo público siguiente() {
Archivo archivo = nulo;
si (tieneSiguiente()) {
archivo = nuevo Archivo(iterator.next());
si (archivo.isDirectory()) {
dirs.add(archivo);
}
}
archivo de devolución;
}
hasNext público booleano() {
si (!iterator.hasNext()) {
rutas.clear();
para (directorio de archivo: directorios) {
para (nombre de cadena: dir.list()) {
rutas.add(dir.getPath()+Archivo.separador+nombre);
}
}
dirs.clear();
si (rutas.tamaño() == 0) {
devolver falso;
}
iterador = rutas.iterador();
}
devolver verdadero;
}
@Anular
eliminación de vacío público() {
lanzar nueva UnsupportedOperationException();
}
@Anular
Iterador público<Archivo> iterador() {
devolver esto;
}
público estático vacío principal (String [] argumentos) {
FileIterator iter = new FileIterator(Arrays.asList("."));
para (archivo de archivo: iter) {
System.out.println(archivo);
}
}
}