我的这个文件夹(C:\Documents and Settings\Administrator\桌面\images\img)里面 有50张图片,我现在的需求是:从这50张图片张读取16张图片,public List<File> storeFile(File file)
{
List<File> list = new ArrayList<File>();
.....
......
.....
return list;
}当我每执行这个方法是,list里面存放的file都要与上次执行这个方法存放的file有不同。

解决方案 »

  1.   

    我写的读取某一个目录下的所有文件(包含子目录)的方法,返回一个arrylist如果有子目录则压入一个‘#’当标记 { public static void getAllFile(String rootpath, String filepath,
    ArrayList<String> flist, boolean isconsubdir) {
    // 获得某个目录下的所有文件列表(可以包括子目录)
    String ffullpath = rootpath + File.separator + filepath;
    File file = new File(ffullpath); if (file.exists() && file.isDirectory()) {
    String[] fileStr = file.list();
    for (int i = 0; i < fileStr.length; i++) {
    if (new File(ffullpath + File.separator + fileStr[i])
    .isDirectory()) {
    if (isconsubdir) {
    // 是否包含子目录文件
    flist.add("#");// 纪录以下是是目录
    flist.add(filepath + File.separator + fileStr[i]);
    getAllFile(rootpath, filepath + File.separator
    + fileStr[i], flist, isconsubdir);
    }
    } else {

    flist.add(filepath + File.separator + fileStr[i]);
    System.out.println(filepath + File.separator + fileStr[i]);
    }
    } }
    }
      

  2.   

    public List<File> storeFile(File file) 

    List <File> allFile = new ArrayList <File>(); 
    List <File> list = new ArrayList <File>();
    File[] files = file.listFiles();
    for(File f:files){
    allFile.add(f);
    }
    Random random = new Random();
    for (int i = 0; i < 16; i++) {
    int j=random.nextInt(allFile.size());
    list.add(allFile.get(j));
    allFile.remove(j);
    }

    return list; 

      

  3.   

    这个方法是对刚才那个装路径的list的解引操作 (其实他是一个复制筛选文件的方法,但楼主仔细看看就明白了)public void creatFile(String oldPath, String newPath,String type) { String temp;
    int dirnum = 0;
    ArrayList<String> flist = new ArrayList<String>();
    ReadFileandDir.getAllFile(oldPath, "", flist, true);//得到某个目录下的全部文件和文件夹
    while (flist.size() != 0) {
    temp = flist.get(0);
    // if (temp.endsWith(type))
    // System.out.println(temp);
    if (temp.startsWith("#")) {
    dirnum++;
    } else {
    if (dirnum > 0) {
    //System.out.println("below is dir");
    new File(newPath + temp).mkdir();
    dirnum--;
    } else {
    // 如果是文件则dosometing
    if (temp.endsWith(type))
    BmpToBit(oldPath + temp);
    //BMPReverse(oldPath + temp, newPath + temp);
    }
    }
    flist.remove(0);
    }
    }
      

  4.   

    public class Filters { /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
    File folder = new File("C:/Windows/System32"); List files = getRandomFiles(folder); int index = 1; for (Iterator iterator = files.iterator(); iterator.hasNext();) {
    File file = (File) iterator.next(); System.out.println((index++) + " File :" + file.getCanonicalPath());
    }
    } private static List getRandomFiles(File folder) {
    FilenameFilter filter = new FilenameFilter() {
    private int count = 0;
    private Random seed = new Random(); @Override
    public boolean accept(File dir, String name) {
    int hashBase = seed.nextInt(10); if (count >= 16) {
    return false;
    } if (name.hashCode() % 10 == hashBase) {
    count++; return true;
    } return false;
    } }; File[] files = folder.listFiles(filter); return Arrays.asList(files);
    }}== 输出:
    1 File :C:\WINDOWS\system32\oleaccrc.dll
    2 File :C:\WINDOWS\system32\perfmon.msc
    3 File :C:\WINDOWS\system32\prnmngr.vbs
    4 File :C:\WINDOWS\system32\pschdprf.ini
    5 File :C:\WINDOWS\system32\psnppagn.dll
    6 File :C:\WINDOWS\system32\rasdial.exe
    7 File :C:\WINDOWS\system32\rsmui.exe
    8 File :C:\WINDOWS\system32\rtm.dll
    9 File :C:\WINDOWS\system32\scriptpw.dll
    10 File :C:\WINDOWS\system32\secpol.msc
    11 File :C:\WINDOWS\system32\services.msc
    12 File :C:\WINDOWS\system32\setup.bmp
    13 File :C:\WINDOWS\system32\setver.exe
    14 File :C:\WINDOWS\system32\sprestrt.exe
    15 File :C:\WINDOWS\system32\system.drv
    16 File :C:\WINDOWS\system32\taskkill.exe