File.list()遇到文件夹,用递归

解决方案 »

  1.   

    kevinliuu(@。@) File.list()遇到文件夹,用递归
    我也想用这个方法来着,但是具体怎么写呢?
      

  2.   

    这是我刚写的一个小程序,可能还有BUG,你看一下:import java.io.File;
    import java.io.IOException;public class SearchFile 
    {
        public SearchFile() 
        {
        }
        public static void searchDirectory(File dir) throws IOException
        {
    if(dir == null || !dir.isDirectory())
            {
                System.out.println("[ " + dir + " ] is not a Directory");
                return;
            }
            
            File[] dirs = dir.listFiles();
            int len = dirs.length;
            for(int i = 0; i<len; i++)
            {
                if(dirs[i].isDirectory())
                {
                    System.out.println("[Dirs] "+dirs[i].toString());
    searchDirectory(dirs[i]);
                }else
                {
                    System.out.println("[File] "+dirs[i].toString());
                }
            }
        }    public static void main(String[] args) throws Exception
        {
            if ( args.length == 0)
            {
    System.out.println("usage:java SearchFile dirname");
    return;
            }
    File dir = new File(args[0]);
    searchDirectory(dir);
        }
    }
      

  3.   

    import java.io.*;
    import java.util.*;
    public class  TestFileList
    {
    static List list = new ArrayList();
    public static void main(String[] args) 
    {
    String path = "D:/a/";
    List oList = allFile(path);
    if(oList==null)
    {
    System.err.println("不是文夹");
    }else{
    System.err.println("长度:"+oList.size());
    }
    }
    private static List allFile(String path)
    {
    File file = new File(path);
    String[] array = null;
    String sTemp = "";
    if(file.isDirectory())
    {
    }else{
    return null;
    } array= file.list();
    if(array.length>0)
    {
    for(int i=0;i<array.length;i++)
    {
    sTemp = path+array[i];
    file = new File(sTemp);
    if(file.isDirectory())
    {
    allFile(sTemp+"/");

    }else{
    System.err.println("文件"+sTemp);
    list.add(sTemp);
    }
    }
    }else{
    return null;
    } return list;
    }
    }试试看,在D盘下建目录好可测试...........成功了!