Il s'agit d'un itérateur.
复制代码代码如下 :
paquet archiver.util;
importer java.io.File ;
importer java.util.ArrayList ;
importer java.util.Arrays ;
importer java.util.Iterator ;
importer java.util.List ;
classe publique FileIterator implémente Iterator<File>, Iterable<File> {
itérateur privé<String>itérateur ;
chemins List<String> privés ;
répertoires de liste privés ;
public FileIterator(List<String> chemins) {
this.paths = new ArrayList<String>(paths);
this.dirs = new ArrayList<File>();
this.iterator = this.paths.iterator();
}
Fichier public suivant() {
Fichier fichier = nul ;
si (hasNext()) {
fichier = nouveau fichier (iterator.next());
si (file.isDirectory()) {
dirs.add(fichier);
}
}
retourner le fichier ;
}
public booléen hasNext() {
si (!iterator.hasNext()) {
chemins.clear();
pour (Répertoire du fichier : répertoires) {
pour (Nom de la chaîne : dir.list()) {
paths.add(dir.getPath()+File.separator+name);
}
}
dirs.clear();
if (paths.size() == 0) {
renvoie faux ;
}
itérateur = chemins.iterator();
}
renvoie vrai ;
}
@Outrepasser
public void supprimer() {
lancer une nouvelle UnsupportedOperationException();
}
@Outrepasser
public Iterator<Fichier> iterator() {
rends ceci ;
}
public static void main (String[] arguments) {
FileIterator iter = new FileIterator(Arrays.asList("."));
pour (Fichier fichier : iter) {
System.out.println(fichier);
}
}
}