可以遍历指定目录(一个或多个)及其所有子文件, 用Iterator实现
复制代码代码如下:
Paket archiver.util;
java.io.File importieren;
import java.util.ArrayList;
java.util.Arrays importieren;
import java.util.Iterator;
java.util.List importieren;
Die öffentliche Klasse FileIterator implementiert Iterator<File>, Iterable<File> {
private Iterator<String>iterator;
private List<String>paths;
private List<File>dirs;
public FileIterator(List<String> paths) {
this.paths = new ArrayList<String>(paths);
this.dirs = new ArrayList<File>();
this.iterator = this.paths.iterator();
}
öffentliche Datei next() {
Dateidatei = null;
if (hasNext()) {
file = new File(iterator.next());
if (file.isDirectory()) {
dirs.add(file);
}
}
Rückgabedatei;
}
öffentlicher boolescher Wert hasNext() {
if (!iterator.hasNext()) {
paths.clear();
for (Dateiverzeichnis: dirs) {
for (String name: dir.list()) {
paths.add(dir.getPath()+File.separator+name);
}
}
dirs.clear();
if (paths.size() == 0) {
return false;
}
iterator = paths.iterator();
}
return true;
}
@Override
öffentliche Leere entfernen() {
throw new UnsupportedOperationException();
}
@Override
public Iterator<File> iterator() {
gib dies zurück;
}
public static void main(String[] args) {
FileIterator iter = new FileIterator(Arrays.asList("."));
for (Datei Datei: iter) {
System.out.println(file);
}
}
}