最近采集了15万张图片,每天采集的图片存储在一个新的目录下,在测试时需要从所有文件夹中随机抽取图片做测试。
package com.vfsd.core; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class RandSelectPicFromFolder { public static void main(String[] args) { String folderPath = "H:\PicDir\"; listFilesFromFolder(folderPath); } public static void listFilesFromFolder(String foldName) { File folder1 = new File(foldName); File[] files1 = folder1.listFiles(); for(File indexFile:files1) { if(indexFile.isDirectory()) { System.out.println("folder:"+indexFile.getName()); selectPicFromFolder(indexFile.getAbsolutePath()); } //if(indexFile.isFile()) { // System.out.println("file:"+indexFile.getName()); // // //} } } public static void selectPicFromFolder(String folderPath) { File folder1 = new File(folderPath); File[] files1 = folder1.listFiles(); int picNum = files1.length; int selectPicIndex = (int) (Math.random()*picNum); System.out.println(selectPicIndex); File selectFile = files1[selectPicIndex]; //System.out.println("file:"+selectFile.getName()); String oriFileName = selectFile.getAbsolutePath(); String newFileName = "H:\select_pic\"+selectFile.getName(); System.out.println(oriFileName+" "+newFileName); try { copyFile(oriFileName,newFileName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void copyFile(String oriFilePath,String newFilePath) throws IOException{ File oriFile = new File(oriFilePath); File newFile = new File(newFilePath); FileInputStream fis = new FileInputStream(oriFile); FileOutputStream fos = new FileOutputStream(newFile); byte[] bytes = new byte[1024]; int b=0; while((b=fis.read(bytes))!=-1) { fos.write(bytes, 0, b); } fos.flush(); fis.close(); fos.close(); } }