//G:\javaPro 目录下所有文件复制到F:\javaPro import java.io.*; public class CopyTest01 { public static void main(String[] args) { String sourceDir="G:\javaPro"; File sd=new File(sourceDir); CopyTest01 ct=new CopyTest01(); ct.copy(sd);
//mkdir与mkdirs的区别? String sourceDir2="F:\JavaSE_01\资料及源代码\资料及源代码\代码练习\chapter08_io\CopyTest01.java"; File sd2=new File(sourceDir2); File parentFile2=sd2.getParentFile(); parentFile2.mkdir(); /*在"F:\JavaSE_01\资料及源代码\资料及源代码\代码练习\chapter08_io\CopyTest01.java";中 只创建chapter08_io目录,在"F:\JavaSE_01\资料及源代码\资料及源代码\代码练习\"目录已经存在时,可以 这么用 parentFile2.mkdirs(); 直接创建 F:\JavaSE_01\资料及源代码\资料及源代码\代码练习\chapter08_io\目录*/
} public void copy(File f){ if(f.isFile()){ String filePath=f.getAbsolutePath();//获取文件绝对路径 String newPath="F"+filePath.substring(1);//生成新的文件路径 File parentFile = new File(newPath).getParentFile(); if(!parentFile.exists()){ parentFile.mkdirs(); } FileInputStream fis=null; FileOutputStream fos=null; try{ fis=new FileInputStream(filePath); fos=new FileOutputStream(newPath); byte[] bytes=new byte[102400];//100kb int t; while((t=fis.read(bytes))!=-1){ fos.write(bytes,0,t); } fos.flush(); }catch(Exception e){ e.printStackTrace(); }finally{ if(fis!=null){ try{ fis.close(); }catch(Exception e){ e.printStackTrace(); } } if(fos!=null){ try{ fis.close(); }catch(Exception e){ e.printStackTrace(); } } } }//if else{ File[] files=f.listFiles(); for(File file:files){ copy(file); } } } }