早上好,在我的时区。
我有以下代码:
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
}
}
}
}
}我想克隆迭代器,因为这个操作在时间上非常昂贵
FileUtils.iterateFiles(new File(directoryPath), new String[]{"java"}, true);提前感谢,致以最诚挚的问候
发布于 2013-10-25 17:39:32
您可以使用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创建新的IteratorfilesIterable调用iterator()FileUtils.iterateFiles创建新的Iterator发布于 2013-10-25 18:22:56
您可以使用
Collection<File> files = FileUtils.listFiles(new File(directoryPath),
new String[]{"java"}, true);创建一个文件集合,然后重用它以进行进一步的迭代。这样,它就不会在你每次迭代文件时都扫描你的根文件夹。
https://stackoverflow.com/questions/19586112
复制相似问题