我的时区早安。
我有以下代码:
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
}
}
}
}
}
我想克隆Iterator,因为这个动作在时间上非常昂贵
FileUtils.iterateFiles(new File(directoryPath), new String[]{"java"}, true);
提前致谢 最好的问候
答案 0 :(得分:0)
您可以使用Iterable
:
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) {
...
}
它的工作原理如下:
for-each
循环要求filesIterable
创建新的Iterator
filesIterable
来电iterator()
FileUtils.iterateFiles
创建新的Iterator
答案 1 :(得分:0)
您可以使用
Collection<File> files = FileUtils.listFiles(new File(directoryPath),
new String[]{"java"}, true);
创建文件集合,然后重复使用它以进行进一步迭代。这样,每次要迭代文件时,它都不会扫描根文件夹。