import java.io.*;public class IDiGui {
static void getDir(String strPath) throws Exception {
try {
File f = new File(strPath);
if (f.isDirectory()) {
File[] fList = f.listFiles();
for (int j = 0; j < fList.length; j++) {
if (fList[j].isDirectory()) {
System.out.println(fList[j].getPath());
getDir(fList[j].getPath()); // 在getDir函数里面又调用了getDir函数本身
}
}
for (int j = 0; j < fList.length; j++) { if (fList[j].isFile()) {
System.out.println(fList[j].getPath());
} }
}
} catch (Exception e) {
System.out.println("Error: " + e);
} } public static void main(String[] args) {
String strPath = "D:\\Program Files\\Tencent\\QQ\\AuI18N";
System.out.println(strPath); try {
getDir(strPath);
} catch (Exception e) { }
}
}第二种:import java.io.File;
import java.util.List;public class IDiGuiTest {
public static void diGui(String path) {
File f = new File(path);
if (f.isDirectory()) {
System.out.println(f.getPath());
File[] l = f.listFiles();
for (int x = 0; x < l.length; x++) {
if (l[x].isFile()) {
System.out.println(f.getPath());

if((l[x].isDirectory())){
System.out.println(l[x].getPath());
diGui(l[x].getPath());
}

}
}

if (f.isFile()){
System.out.println(f.getPath());
}
} /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method
String path = "D:\\Program Files\\Tencent\\QQ\\AuI18N";
diGui(path);
System.out.println("good");
}}

解决方案 »

  1.   

    if (f.isFile()){
    System.out.println(f.getPath());
    }
    }
    改成,不然它会重复输出一遍
     else if(f.isFile()){
    System.out.println(f.getPath());
    }
    }
      

  2.   

    public static void diGui(String path) {
    File f = new File(path);
    if (f.isDirectory()) {
    System.out.println(f.getPath());
    File[] l = f.listFiles();
    for (int x = 0; x < l.length; x++) {
    if (l[x].isFile()) {
    System.out.println(f.getPath()); //应该是这里输出错了我吧,应该是l[x].getPath()
    }  
    if((l[x].isDirectory())){
    System.out.println(l[x].getPath());
    diGui(l[x].getPath());
    }}
    }if (f.isFile()){
    System.out.println(f.getPath());
    }
    }
      

  3.   

    你这所有的println的格式都一样,不好判断是哪里打的,你最好用个前缀什么区分一下,看看分别是哪几句打印的。
      

  4.   


        public static void diGui(String path, String s) {
            File f = new File(path);
            if (f.isDirectory()) {
                System.out.println(s + "dir:" + f.getPath());//////
                File[] l = f.listFiles();
                for (int x = 0; x < l.length; x++) {
                    if (l[x].isFile()) {
                        System.out.println(s + "\tfile:" + f.getPath());
                    }
                    if ((l[x].isDirectory())) {
    //                    System.out.println(l[x].getPath());//和上重复
                        diGui(l[x].getPath(), s + "\t");
                    }
                }
            } else///加上else
            if (f.isFile()) {
                System.out.println(s + "file:" + f.getPath());
            }
        }    /**
         * @param args
         */
        public static void main(String[] args) {
    // TODO Auto-generated method
            String path = "D:\\Program Files\\Tencent\\QQ";
            diGui(path, "");//加个s来放各级目录的空格
            System.out.println("good");
        }
      

  5.   

    写的精简一点,
    public static void diGui(String path) {
    File f = new File(path);
    if (f.isDirectory()) {
    System.out.println(f.getPath()); //打印目录路径
    File[] l = f.listFiles();
    for (int x = 0; x < l.length; x++) {
    diGui(l[x].getPath()); //递归
    }
    } else if (f.isFile()) {
    System.out.println(f.getPath());//打印文件路径
    }
    }
      

  6.   

        的确是有两个错误,langlu找到一个,我自己调试出来还有个错误,
    if((l[x].isDirectory())){
    System.out.println(l[x].getPath());//这句也要删掉。谢谢大家,悬赏分给ID 给langlu
    diGui(l[x].getPath());