public static TreeMap listFolder(File rootFolder, int c) {
TreeMap TreeMap = new TreeMap();
if (!rootFolder.isDirectory()) {
System.out.println(
rootFolder.getName() + "   is   not   a   directory!");
} else {
File dirList[] = rootFolder.listFiles();
for (int i = 0; i < dirList.length; i++) {
for (int j = 0; j <= c; j++) {
//System.out.print("             ");   
}
if (dirList[i].isDirectory()) {
//System.out.println("<"+dirList[i].getName()+">");   
c++;
listFolder(dirList[i], c);
c--;
} else if (dirList[i].isFile()) { if ((dirList[i].getName()).endsWith(".java")) {
//System.out.println(dirList[i].getName());  //readfile(dirList[i], dirList[i].getName());

TreeMap.put(dirList[i],dirList[i].getName());
                                               //关键问题出现在这里,我想遍历根目录下所有文件夹及其文件,
                                                        然后我想得到每个文件的名字及文件本身,1:1对应关系,
                                                        最后想把循环结果存在TreeMap里,但我测试下来总是把当前的目录下文件存进来,接着存这个文件夹下面包含的目录文件的时候就没有结果了,但我System.out.println(dirList[i].getName())这个的时候还都能得到所有文件的名字,有点晕,帮帮忙吧大侠们,能帮我改改程序吗?不知道怎么做了?
} }
}
}
return TreeMap;
}

解决方案 »

  1.   

    要递归。
    for (int i = 0; i  < dirList.length; i++) { 
    下面要这样:
    listFolder(dirList.get[i], c+1);
      

  2.   

    楼主看看这个帖子http://topic.csdn.net/u/20080403/13/dd1c0003-8acf-4535-bb00-2d28870a75fc.html或许有些帮助
      

  3.   

    TreeMap.put(dirList[i],dirList[i].getName()); 红色部分是file类型吧?
    TreeMap  put进去的是一个key
    你可以选择用文件的名称(name)或者是路径(path)来做这个key
    dirList[i].getName();dirList[i].getPath();
      

  4.   

    我  需要的是文件,而不想要文件的路径阿
    key存文件好像可以吧?高人指教一下应该怎样做呢