package ilarkesto.io; import java.io.File; import java.util.Iterator; /** * Iterator for files that includes sub dirs. */ public class FileIterator implements Iterator<File> { private File[] files; private int index = 0; private File currentFile; private FileIterator iterator; public void setFiles(File[] files) { this.files = files; } public void setDir(File file) { setFiles(file.listFiles()); } public boolean hasNext() { if (iterator != null) { boolean hasNext = iterator.hasNext(); if (hasNext) return true; iterator = null; } if (files == null) return false; if (index >= files.length) return false; return true; } public File next() { if (iterator != null) return iterator.next(); currentFile = files[index++]; if (currentFile.isDirectory()) { iterator = new FileIterator(); iterator.setFiles(currentFile.listFiles()); if (hasNext()) return next(); } return currentFile; } public void remove() { IO.delete(currentFile); } }