import java.io.*; import java.util.*; public class Main { static class LeveledFile { public LeveledFile(File file, int level) { this.file = file; this.level = level; } public int getLevel() { return level; } public File getFile() { return file; } private File file; private int level; } public static void main(String[] args) { int maxLevel = 3; LinkedList stack = new LinkedList(); stack.addLast(new LeveledFile(new File("./"), 1)); while(!stack.isEmpty()) { LeveledFile current = stack.removeLast(); System.out.println(current.getFile()); if(current.getLevel() < maxLevel && current.getFile().isDirectory()) for(File child : current.getFile().listFiles()) stack.addLast(new LeveledFile(child, current.getLevel() + 1)); } } }