File f = new File("c:\\");
除了f.listFiles()这个方法外,有什么直接的方法列出所有的文件夹吗?
如果文件非常多用这个方法就会内在溢出,求方法

解决方案 »

  1.   

    你直接list()呢,返回所有的路径,返回类型是字符串……
      

  2.   

    f.listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
    是该目录中的文件,不是子目录吧?
    你可以这么做:
    public void getDir(String strPath) 

     File f=new File(strPath); 
    if(f.isDirectory()) 

     File[] fList=f.listFiles(); 
    for(int j=0;j<fList.length;j++) 
             { 
    if(fList[j].isDirectory()) 
            getDir(fList[j].getPath); 
            System.out.println(fList[j].getName());
             } 
    }  
    获得该父目录下所有子目录
      

  3.   

    windows自带的吧。tree 一下。
      

  4.   

    void recurAllFolders(File root) {
      for (File file : root.listFiles()) {
        if (file.isDirectory()) {
          System.out.println(file.getPath());      
          recurAllFolders(file);
        }
      }
    }
      

  5.   

    如果文件多的话listFiles()返回的结果内在装不下的。
    我找到方法了,和大家分享下
    通过FileFilter 来实现
    package com;import java.io.File;
    import java.io.FileFilter;public class FilterWenJian implements FileFilter{
    String wenjian; public FilterWenJian(String extension) { 
    this.wenjian = extension; 
    }  public boolean accept(File dir) {
    return dir.isDirectory();
    }}        /**
     * 列出目录的所有子文件夹
     * @param path 路径
     * @return 文件夹列表
     */
    public File[] getDir(String path){
    File f = new File(path);
    FileFilter  filter = new FilterWenJian("");
    File[] list = f.listFiles(filter);
    return list;
    }
      

  6.   

    下面代码在本机上已测试成功,主要就是加一个FileFilter.过滤了文件,只保存文件夹.
    import java.io.*;
    class Test
    {
    public static void main(String args[]) throws Exception
    {
    File aaa = new File("c:\\"); 
    aaa.mkdir();
    MyFileFilter mff = new MyFileFilter(true);
    System.out.println(aaa.getAbsolutePath()+aaa.isDirectory());

    File[] fileNames = aaa.listFiles(mff);
    for(int i = 0;i<fileNames.length;i++)
    {
    System.out.println(fileNames[i].getAbsolutePath());
    }

    }
    }
    class MyFileFilter implements FileFilter
    {
    private boolean isDirectory;
    public MyFileFilter(boolean isDir)
    {
    this.isDirectory = isDir;
    }
    public boolean accept(File pathname)
    {
    if(pathname.isDirectory() == isDirectory)
    {
    return true;
    }
    else
    return false;
    }}