1 package net.sf.openrocket.file;
3 import java.io.BufferedInputStream;
5 import java.io.FileFilter;
6 import java.io.FileInputStream;
7 import java.io.FileNotFoundException;
8 import java.io.IOException;
9 import java.io.InputStream;
11 import net.sf.openrocket.logging.LogHelper;
12 import net.sf.openrocket.startup.Application;
13 import net.sf.openrocket.util.Pair;
16 * A DirectoryIterator that scans for files within a directory in the file system.
18 * TODO: MEDIUM: Does not support recursive search.
20 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
22 public class RegularDirectoryIterator extends DirectoryIterator {
24 private static final LogHelper logger = Application.getLogger();
26 private final File[] files;
27 private int position = 0;
32 * @param directory the directory to read.
33 * @param filter the filter for selecting files.
34 * @throws IOException if the directory cannot be read.
36 public RegularDirectoryIterator(File directory, FileFilter filter)
38 this.files = directory.listFiles(filter);
39 if (this.files == null) {
40 throw new IOException("not a directory or IOException occurred when listing files " +
48 protected Pair<String, InputStream> findNext() {
49 for (; position < files.length; position++) {
51 InputStream is = new BufferedInputStream(new FileInputStream(files[position]));
53 return new Pair<String, InputStream>(files[position-1].getName(), is);
54 } catch (FileNotFoundException e) {
55 logger.warn("Error opening file " + files[position], e);