java使用iterator遍历指定目录示例分享

 更新时间:2014年04月01日 14:00:44   作者:  
这篇文章主要介绍了java使用iterator遍历指定目录示例,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

可以遍历指定目录(一个或多个)及其所有子文件,用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);
  }
 }
}

相关文章

  • Spring Cloud Consul的服务注册与发现

    Spring Cloud Consul的服务注册与发现

    这篇文章主要介绍了Spring Cloud Consul服务注册与发现的实现方法,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-02-02
  • java实现emqx设备上下线监听详解

    java实现emqx设备上下线监听详解

    这篇文章主要为大家介绍了java实现emqx设备上下线监听详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Spring中@Transactional注解关键属性和用法小结

    Spring中@Transactional注解关键属性和用法小结

    在Spring框架中,@Transactional 是一个注解,用于声明事务性的方法,它提供了一种声明式的事务管理方式,避免了在代码中直接编写事务管理相关的代码,本文给大家介绍@Transactional 注解的一些关键属性和用法,感兴趣的朋友一起看看吧
    2023-12-12
  • java screen的配置详解及注意事项

    java screen的配置详解及注意事项

    这篇文章主要介绍了java screen的配置详解及注意事项的相关资料,需要的朋友可以参考下
    2017-07-07
  • SpringBoot项目中只执行一次的任务写法实现

    SpringBoot项目中只执行一次的任务写法实现

    有时候我们需要进行初始化工作,就说明只要进行一次的工作,本文主要介绍了SpringBoot项目中只执行一次的任务写法实现,感兴趣的可以了解一下
    2023-12-12
  • Java多线程工具篇BlockingQueue的详解

    Java多线程工具篇BlockingQueue的详解

    今天小编就为大家分享一篇关于Java多线程工具篇BlockingQueue的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • spring?boot项目中集成rocketmq详细步骤

    spring?boot项目中集成rocketmq详细步骤

    这篇文章主要给大家介绍了关于spring?boot项目中集成rocketmq的相关资料,springboot集成rocketmq的方法非常简单,文中直接上代码,需要的朋友可以参考下
    2023-09-09
  • 解决Springboot整合shiro时静态资源被拦截的问题

    解决Springboot整合shiro时静态资源被拦截的问题

    这篇文章主要介绍了解决Springboot整合shiro时静态资源被拦截的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • log4j详细的常用配置说明介绍

    log4j详细的常用配置说明介绍

    下面看我怎么一步步配置到控制台的,log4j的输出级别和输出模式相信屌丝们都知道的
    2012-11-11
  • Spring Boot整合Swagger2的完整步骤详解

    Spring Boot整合Swagger2的完整步骤详解

    这篇文章主要给大家介绍了关于Spring Boot整合Swagger2的完整步骤,文中通过示例代码将整合的步骤一步步介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论

?


http://www.vxiaotou.com