用I/O 和递归 拷贝复制文件
1 public class wenjianfuzhi 2 { 3 static File file = new File("F:\java\workspace\Yichang\src\"); 4 public static void main(String[] args) throws Exception 5 { 6 File[] files = file.listFiles();//l列出所有的子文件和路径 7 for(File f : files)//遍历当前文件夹里面的所有文件 8 { 9 copy(f); 10 } 11 } 12 public static void copy(File file) throws Exception 13 { 14 if(file.isFile())//判断对象是否为文件--不是目录 15 { 16 17 /** 18 * 1、一定要是文件的时候才处理 19 * 2、当他是文件的时候获取到当前文件的目录:F:\java\workspace\Yichang\src\com\cyghyy 20 * 3、判断当前文件所在的文件夹和给定文件夹之间差了什么:F:\java\workspace\Yichang\src\com 》cyghyy 21 * 4、在d盘下面创建d://差的文件夹 -- 当前文件要拷贝的目录 22 * 5、构建当前要拷贝的文件的路-第四部的到目录+文件的名字 23 * 6、用IO来读和写完成拷贝的工作 24 */ 25 String path = file.getParent();//当他是文件的时候获取到当前文件的目录:F:\java\workspace\Yichang\src\com\cyghyy 26 String name = path.replace(wenjianfuzhi.file.getAbsolutePath(), "");//判断当前文件所在的文件夹和给定文件夹之间差了什么:F:\java\workspace\Yichang\src\com 》cyghyy 27 File target = new File ("E:\",name);//在D盘下面创建D://差的文件夹--当前文件要拷贝的目录 28 if(!target.exists())//判断对象所对应的文件或文件及是否存在, 29 { 30 target.mkdirs();//如果不存在那么创建 31 } 32 33 target = new File(target,file.getName());//构建当前要拷贝的文件的路径--第4步的目录+文件的名字 34 FileInputStream in = new FileInputStream(file);//用IO来读写完成拷贝 35 FileOutputStream out = new FileOutputStream(target); 36 byte[] b = new byte[200];//每次读取200个字节 37 int length = in.read(b);//读取到的字节 38 while (length !=-1) 39 { 40 out.write(b, 0, length);//输出读取到的200字节,读到 多少就输出多少 41 length = in.read(b);//从201开始去读取200 个字节 如此循环 42 } 43 out.flush();//清除缓存 44 out.close();//关闭流 45 in.close();//关闭流 46 }else//如果不是文件那么执行下面代码 47 { 48 File[] files =file.listFiles();//列出所有子文件和路径 49 for(File file2 : files)//遍历文件和路径 50 { 51 copy(file2);// 52 } 53 } 54 } 55 }