时间:2021-05-19
可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现
复制代码 代码如下:
package archiver.util;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class FileIterator implements 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();
}
public File next() {
File file = null;
if (hasNext()) {
file = new File(iterator.next());
if (file.isDirectory()) {
dirs.add(file);
}
}
return file;
}
public boolean hasNext() {
if (!iterator.hasNext()) {
paths.clear();
for (File dir : 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
public void remove() {
throw new UnsupportedOperationException();
}
@Override
public Iterator<File> iterator() {
return this;
}
public static void main(String[] args) {
FileIterator iter = new FileIterator(Arrays.asList("."));
for (File file : iter) {
System.out.println(file);
}
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java使用Iterator迭代器遍历集合数据的方法。分享给大家供大家参考,具体如下:1、使用迭代器遍历ArrayList集合packagecom
本文实例讲述了ES6中Iterator与for..of..遍历用法。分享给大家供大家参考,具体如下:Iterator与for..of..遍历1.Iterator
Java2遍历集合遍历Collection的代码,可以是采用Iterator接口,通过next()遍历。如:Listlist=Arrays.asList("Hi
本文介绍了最好的Java5种遍历HashMap数据的写法,分享给大家,也给自己留一个笔记,具体如下:通过EntrySet的迭代器遍历Iterator<Entry
本文介绍了node.js遍历目录的方法示例,分享给大家,也给自己留个笔记,具体如下同步遍历constfs=require('fs');constpath=req