1 public class IOTest { 2 // 存储获取的文件绝对路径 3 private static List<String> list = new ArrayList<String>(); 4 public static void main(String[] args) { 5 File file = new File("D:/holle"); 6 Long sta = System.currentTimeMillis(); 7 mkdirAll(file); 8 for(String str : list){ 9 String[] split = str.split("\\\\"); 10 try { 11 IO(str, "D:/"+split[split.length-1]); 12 } catch (IOException e) { 13 e.printStackTrace(); 14 } 15 } 16 Long end = System.currentTimeMillis(); 17 System.out.println("用时"+(end-sta)); 18 } 19 20 21 private static void mkdirAll(File file){ 22 File[] f = file.listFiles(); 23 for (File file2 : f) { 24 // 递归算法,如果有子文件夹继续向下查找 25 if(file2.isDirectory()){ 26 mkdirAll(file2); 27 }else{ 28 list.add(file2.toString()); 29 } 30 } 31 } 32 33 public static void IO(String file,String newFile)throws IOException{ 34 //源 35 File f1 = new File(file); 36 File f2 = new File(newFile); 37 //流 38 FileInputStream fis = new FileInputStream(f1); 39 FileOutputStream fos = new FileOutputStream(f2); 40 //读 41 byte[] data = new byte[1024 * 1024]; 42 //写 43 int len = 0; 44 while((len = fis.read(data)) != -1){ 45 fos.write(data, 0, len); 46 } 47 //关 48 fis.close(); 49 fos.close(); 50 } 51 }