街头小贩 2016-10-14 00:48 采纳率: 0%
浏览 1316
已采纳

org.apache.commons.io.DirectoryWalker如何递归遍历

 public class DirectoryTracker extends DirectoryWalker<String> {
    private int bufferSize=100;
    private final List<String> workedBuffer=Collections.synchronizedList(new ArrayList<String>());
    private static final Logger log = LoggerFactory.getLogger(DirectoryTracker.class);

    public DirectoryTracker(FileFilter filter) {
        super(filter,-1);
        // TODO Auto-generated constructor stub
    }
    /**
     * 设置一次处理的结果集大小
     * @param size
     */
    public void setBufferSize(int size){
        this.bufferSize=size;
    }

    @Override
    protected boolean handleDirectory(File directory, int depth, Collection<String> results) throws IOException {
        // TODO Auto-generated method stub
        //这理怎么写
        return true;
    }

    @Override
    protected void handleFile(File file, int depth, Collection<String> results) throws IOException {
        // TODO Auto-generated method stub
        //super.handleFile(file, depth, results);
        results.add(file.getAbsolutePath());
    }

    private List<String> getAllFile(File startDirectory) throws IOException{
        List<String> result=new ArrayList<>(bufferSize);
        walk(startDirectory,result);
        return result;
    }
    //ETC
}

指定一个开始的目录(例:D:\Documents\Pictures),这个目录下有图片也有子目录,子目录的情况如父目录一样,现在这个类不进入子目录,怎样作到无限递归遍历

  • 写回答

3条回答 默认 最新

  • _1_1_7_ 2016-10-14 01:26
    关注

    // TODO Auto-generated method stub
    //这理怎么写
    if(depth==-1)return;
    File[] files=directory.listFiles();
    for(File file:files){
    if(file.isDirectory()){
    handleDirectory(file,depth-1,results);
    }else if(filter.accept(file)){
    handleFile(file,depth-1,results);
    }
    }

                手写的,没有编译调试过,大概是这个意思吧
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!