dici qualcosa del genere o ho sbagliato completamente?
nn ho mai usato StringBuilder (anche se è molto interessante):
codice:
    private static void listingDir(File dir, int livello) {
        String spazio = "";
        StringBuilder sb = new StringBuilder("");
        List<File> file = new ArrayList<File>();
        File[] elementi = dir.listFiles();
        for (int l = 0; l < livello; l++) {
            spazio += "   ";
        }
        for (File files : elementi) {
            file.add(files);
            if (files.isDirectory()) {
                listingDir(files, 0);
                StringBuilder append = sb.append(spazio).append(files);
            }
        }
    }

    public static String sortList(File dir) throws FileNotFoundException {
        validateDir(dir);
        List<File> file = listingDir(dir, 0);
        String result = "";
        Collections.sort(file, new myComparator());
        for (File files : file) {
            result += files.getName() + "\n";
        }
        return result;
    }
inoltre avendo messo questo metodo come void ho un problema su sort in quanto giustamente quando rihiama listDir si aspetta un void, e invece la gli do un List<File>.