diff --git a/filetraverser/FileTraverser.java b/filetraverser/FileTraverser.java new file mode 100644 --- /dev/null +++ b/filetraverser/FileTraverser.java @@ -0,0 +1,55 @@ +/** + * FileTraverser.java + * Copyright (C) 2010 Markus Broeker + */ + +import java.io.File; +import java.util.List; +import java.util.ArrayList; + +public class FileTraverser { + + /** + * @Params folder: the starting directory, the starting folder + * @Params recursive: list subfolders recursively or not + * @Params list: the list to store the data + */ + public static void find(String folder, boolean recursive, List list) { + + File directory = new File (folder); + if (!directory.isDirectory()) + return; + else + list.add(directory.getPath()); + + /* prevent linux recursion problems when using symlinks */ + if (Unix.isLink(folder)) { + return; + } + + File[] files = directory.listFiles(); + + for (File f : files) { + if (f.isDirectory() && recursive) { + find(f.getPath(), recursive, list); + } else + list.add(f.getPath()); + } + } + + public static void main(String[] args) { + List list = new ArrayList(); + String homeDir = System.getProperty("user.home"); + boolean recursive = false; + + if (args.length == 2) { + homeDir = args[0]; + recursive = Integer.parseInt(args[1]) != 0 ? true : false; + } + + find(homeDir, recursive, list); + for (String s : list) { + System.out.println ("List: " + s); + } + } +}