读取文件列表如果太多了怎么办》
使用java的File.listFiles获得某路径下的所有文件列表。
但是如果此路径下文件数量很多,例如100000个等等,而我不能让他一次返回给我一个十万的数组。
能否让他分批的返回给我结果,或者有什么办法能一次次的分批获取?另一个类似的问题:通过java获取Ftp目录下的文件列表(org.apache的ftpconnection),也是会一次返回所有文件,能否分批?或者有没有变通的办法?谢谢各位大侠。
有效答复即给分。

解决方案 »

  1.   

    File对象的list()方法String[] list() 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。 你就对数组分批操作可以吗?
      

  2.   

    可以过虑,这个过虑的方法可以参考Thinking in Java里面的方法。
    实际10w个文件也不算多
      

  3.   

    if(!s.endwith("----"))
      
      

  4.   

    file.getfilename;看看文档,知道怎么做实现起来不麻烦
      

  5.   

    不是有个FileFilter 接口吗?
      

  6.   

    import java.io.*;public class FileDemo {
    public static void main(String[] args) throws Exception{
    File file = new File("D:\\");//实例化文件对象file
    FileDemo.dis(file);//调用方法dis
    }
    public static void dis(File file) throws Exception{
    if(!file.isDirectory()){//如果file不是文件夹
    System.out.println("打印该文件对象的完整路径");
    System.out.println(file.getCanonicalPath());//打印该文件对象的完整路径
    }
    else if(file.isDirectory()){
    File[] directoryList=file.listFiles(new MyFileFilter());
    for(int i=0;i<directoryList.length;i++){
    dis(directoryList[i]);
    }
    }
    }

    static class MyFileFilter implements FileFilter{
    public boolean accept(File file){
    if(file.isFile()){
    return false;
    }
    else{
    return true;
    }
    }
    }

    }