X-Git-Url: https://juplo.de/gitweb/?p=scannotation;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fscannotation%2Farchiveiterator%2FFileIterator.java;fp=src%2Fmain%2Fjava%2Forg%2Fscannotation%2Farchiveiterator%2FFileIterator.java;h=aa3593b077df98a7de4e57b129a57c228c79435e;hp=0000000000000000000000000000000000000000;hb=36e6637926203201648e7892ec6ee1240807218e;hpb=58b6663aae5313b41167d92851981ca549cbb461 diff --git a/src/main/java/org/scannotation/archiveiterator/FileIterator.java b/src/main/java/org/scannotation/archiveiterator/FileIterator.java new file mode 100644 index 0000000..aa3593b --- /dev/null +++ b/src/main/java/org/scannotation/archiveiterator/FileIterator.java @@ -0,0 +1,68 @@ +package org.scannotation.archiveiterator; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class FileIterator implements StreamIterator +{ + private ArrayList files; + private int index = 0; + + public FileIterator(File file, Filter filter) + { + files = new ArrayList(); + try + { + create(files, file, filter); + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + protected static void create(List list, File dir, Filter filter) throws Exception + { + File[] files = dir.listFiles(); + for (int i = 0; i < files.length; i++) + { + if (files[i].isDirectory()) + { + create(list, files[i], filter); + } + else + { + if (filter == null || filter.accepts(files[i].getAbsolutePath())) + { + list.add(files[i]); + } + } + } + } + + public InputStream next() + { + if (index >= files.size()) return null; + File fp = (File) files.get(index++); + try + { + return new FileInputStream(fp); + } + catch (FileNotFoundException e) + { + throw new RuntimeException(e); + } + } + + public void close() + { + } +}