首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >克隆迭代器FileUtils

克隆迭代器FileUtils
EN

Stack Overflow用户
提问于 2013-10-25 17:31:48
回答 2查看 139关注 0票数 0

早上好,在我的时区。

我有以下代码:

代码语言:javascript
复制
Iterator<File> files = FileUtils.iterateFiles(new File(directoryPath), new String[]{"java"}, true);

        for(String file : ws){
            while(files.hasNext()){
                current = files.next();
                if(!current.isDirectory()){
                    if(current.getName().matches(file+".*ServiceProxy.*")){
        //I need to start the cycle again from the beginning to search in each
    //file for the ServiceProxy string
    //Something like this
            // cloneFiles = files.clone();
         //while(cloneFiles.hasNext()){
              file = files.next();
              //search inside the file code
         }
                    }
                }
            }   
        }

我想克隆迭代器,因为这个操作在时间上非常昂贵

代码语言:javascript
复制
FileUtils.iterateFiles(new File(directoryPath), new String[]{"java"}, true);

提前感谢,致以最诚挚的问候

EN

回答 2

Stack Overflow用户

发布于 2013-10-25 17:39:32

您可以使用Iterable

代码语言:javascript
复制
Iterable<File> filesIterable = new Iterable<>(){
    public Iterator<File> iterator() {
        return FileUtils.iterateFiles(...);
    }
};

...

for (File file : filesIterable) {
    ...
}

// ... and you may reuse it over and over. 
// For each cycle declaration there will be a new `Iterator` created.

for (File file : filesIterable) {
    ...
}

它是这样工作的:

  1. for-each循环请求filesIterable创建新的Iterator
  2. filesIterable调用iterator()
  3. FileUtils.iterateFiles创建新的Iterator
票数 0
EN

Stack Overflow用户

发布于 2013-10-25 18:22:56

您可以使用

代码语言:javascript
复制
Collection<File> files = FileUtils.listFiles(new File(directoryPath), 
    new String[]{"java"}, true);

创建一个文件集合,然后重用它以进行进一步的迭代。这样,它就不会在你每次迭代文件时都扫描你的根文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19586112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档