main函数应该是:    public static void main (String[] args)
    {
        new JavaDir(args[0],args[1]);
    }

解决方案 »

  1.   

    Thinking in Java 有说,看看吧.
      

  2.   

    问题在于目录被你的myFilter过滤掉了!
    在你的程序里,除非目录名也用txt作扩展名,否则在
    files = path.list(new myFilter(extent));
    就已经被过滤掉了。
      

  3.   

    to taolei:
    但是实际情况是目录没有被过滤掉阿!
    filenameFilter接口里的accept方法里不是有:        if(dir.isDirectory())
            {
                return true;
            }实际情况是第一层的目录可以显示出来,但是里面的无论是目录还是文件都不能显示!
    why?
      

  4.   

    程序改动如下:import java.util.*;
    import java.io.*;
    import java.lang.System;public class JavaDir
    {
        public static void main (String[] args)
        {
            new JavaDir("c:\\tools\\NetAnts","");
        }
        
        public static int indentLevel = -1;
        
        public JavaDir(String path,String extent)
        {
            listPath((new File(path)),extent);
        }
        
        void listPath(File path,String extent)
        {
            String files[];
            indentLevel++;
            files = path.list(new myFilter(extent));
            Arrays.sort(files);
            for(int i = 0;i < files.length;i++)
            {
                for(int indent = 0;indent < indentLevel;indent++)
                {
                    System.out.print("  ");
                }
                System.out.println(files[i]);           
                File tmp = new File(path.toString()+"\\"+files[i]);
                if(tmp.isDirectory())
                {
                    listPath(tmp,extent);
                }
            }
            indentLevel--;
        }
    }class myFilter implements FilenameFilter
    {
        private String extensionName;
        
        public myFilter(String extent)
        {
            this.extensionName = extent;
        }
        
        public boolean accept(File dir,String name)
        {
            if(dir.isDirectory())
            {
                return true;
            }
            else
            {
                return name.endsWith("." + extensionName);
            }
        }
        
    }
      

  5.   

    sorry,没仔细看程序。问题在
    File tmp = new File(files[i]);
    改成
    File tmp = new File(path,files[i]);
    就可以了。