java使用iterator遍歷指定目錄示例分享
可以遍歷指定目錄(一個(gè)或多個(gè))及其所有子文件,用Iterator實(shí)現(xiàn)
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);
}
}
}
相關(guān)文章
MyBatis-Plus結(jié)合Layui實(shí)現(xiàn)分頁(yè)方法
MyBatis-Plus 使用簡(jiǎn)單,本文主要介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架實(shí)現(xiàn)分頁(yè)效果,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解
這篇文章主要介紹了 Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
springcloud?feign服務(wù)之間調(diào)用,date類(lèi)型轉(zhuǎn)換錯(cuò)誤的問(wèn)題
這篇文章主要介紹了springcloud?feign服務(wù)之間調(diào)用,date類(lèi)型轉(zhuǎn)換錯(cuò)誤的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java的Hibernate框架中的繼承映射學(xué)習(xí)教程
Hibernate中的映射可以將類(lèi)與表對(duì)應(yīng),并利用類(lèi)的繼承特性,這里我們就來(lái)看一下Java的Hibernate框架中的繼承映射學(xué)習(xí)教程2016-07-07
詳解springboot?springsecuroty中的注銷(xiāo)和權(quán)限控制問(wèn)題
這篇文章主要介紹了springboot-springsecuroty?注銷(xiāo)和權(quán)限控制,賬戶注銷(xiāo)需要在SecurityConfig中加入開(kāi)啟注銷(xiāo)功能的代碼,權(quán)限控制要導(dǎo)入springsecurity和thymeleaf的整合依賴(lài),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03
解析spring事務(wù)管理@Transactional為什么要添加rollbackFor=Exception.class
這篇文章主要介紹了spring事務(wù)管理@Transactional為什么要添加rollbackFor=Exception.class,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11

