一个文件夹下有很多.jpg图片,我想快速随即取出一张后缀名为.small.jpg的图片的名字,关键是要高效,之前我是取出从第十个开始的第一张后缀名以.small.jpg的名称,发现如果文件夹下图片太多的话效率不高,所以想随即取出一张是不是效率会高点?如果随即取出该怎样去实现效率会高

解决方案 »

  1.   

    图片名:
    1.small.jpg
    2.small.jpg
    3.small.jpg
    .....
    random一个数,再加上.small.jpg
      

  2.   

    2楼的关键是我这里面的图片名称不确定,譬如说有的文件夹下的图片名称为 拉丁舞 恰恰 02 纽约步 20080710.avi_00-00-00.4.jpg而有的文件夹下的图片名称为交 流1.mpg_00-00-01.3.jpg就是说各个文件夹下的名称并不是很有规律的我以前的方法是这样
    public String getPic(String path){
    File file=new File(path);
    File[] lf=file.listFiles();
    String fileStr="";
    for(int i=10;i<lf.length;i++){

    if(lf[i].getName().endsWith(".small.jpg"))
    {
    fileStr=lf[i].getName().toString();
    //System.out.println(fileStr);
    break;
    }
    }
    return fileStr;
    }
    后来我把lf.length改为20就是说从第十个开始到第二十个之间后缀名以.small.jpg的第一个文件,但是当一个文件夹下如果有3万张以上的图片,这种方法也是比较慢的,有没有效率更好的办法
      

  3.   

    如果文件夹下图片很多的话,可以分成多个来循环读取,如有3万个图片,可以分成30个(可以是Vector),每个Vector里面有1000个,再来读取时候应该就快了。如果把3万个同时放到Vector里面的再判断,内存肯定会很慢的,建议用上面的试一下
      

  4.   

    File类做list时候用个过滤器把需要的文件(.small.jpg结尾的文件),然后随机一个范围在返回的文件数组大小的数传到数组里可以不?
      

  5.   

    还有没有更好的方法,我就是想在有一个很多图片的文件夹下随即找到一幅后缀名为.small.jpg的图片,只要效率高就可以