可以遍历指定目录(一个或多个)及其所有子文件实现
复制代码代码如下:
pengarsip paket.util;
impor java.io.File;
impor java.util.ArrayList;
import java.util.Array;
impor java.util.Iterator;
impor java.util.List;
FileIterator kelas publik mengimplementasikan Iterator<File>, Iterable<File> {
Iterator pribadi<String>iterator;
jalur Daftar<String>pribadi;
Daftar pribadi<File>dir;
FileIterator publik(Daftar<String> jalur) {
this.paths = new ArrayList<String>(paths);
this.dirs = Daftar Array baru<File>();
ini.iterator = ini.jalur.iterator();
}
File publik selanjutnya() {
Berkas berkas = nol;
jika (hasNext()) {
file = File baru(iterator.next());
if (file.isDirectory()) {
dirs.add(file);
}
}
mengembalikan berkas;
}
boolean publik hasNext() {
jika (!iterator.hasNext()) {
jalur.clear();
untuk (Direktori file : dir) {
for (Nama string : dir.list()) {
path.add(dir.getPath()+File.separator+nama);
}
}
dirs.clear();
if (jalur.ukuran() == 0) {
kembali salah;
}
iterator = jalur.iterator();
}
kembali benar;
}
@Mengesampingkan
kekosongan publik hapus() {
melempar UnsupportedOperationException();
}
@Mengesampingkan
Iterator publik<File> iterator() {
kembalikan ini;
}
public static void main(String[] args) {
FileIterator iter = FileIterator baru(Arrays.asList("."));
untuk (File file : iter) {
Sistem.keluar.println(berkas);
}
}
}