黑马程序员技术交流社区

标题: 复制文件夹代码 [打印本页]

作者: Justfeeling    时间: 2014-9-18 13:37
标题: 复制文件夹代码
  1. /*
  2. *  复制一个文件夹
  3.           首先将数据源 c:\\demo,数据目的 d: 封装成File对象
  4.           从源中获取文件夹的名字,将目的和文件夹的名组成新的File对象,创建目的文件夹
  5.         获取数据源的中的全部文件 文件的数组File[]
  6.         遍历数组,获取到的是数据源中的文件的全路径
  7.         获取文件名,将文件名和你的数据目的文件夹组成新的File对象
  8.         源有了,目的有了,字节流读写文件

  9. 案例,IO,File类的配合使用
  10. 流读写重要,File类的方法很重要
  11. */
  12. import java.io.*;
  13. public class CopyDir {
  14.         public static void main(String[] args) {
  15.                  copyDir(new File("D:\\迅雷下载"), new File("E:\\"));
  16.         }
  17.         //定义方法,实现目录的复制,定义两个参数,数据源,复制的目的
  18.         private static void copyDir(File source,File target){
  19.                 //获取数据源的文件夹的名字
  20.                 String name = source.getName();
  21.                 //目的有了吧,+ 文件夹名,创建一个同名的目录
  22.                 //目的盘,和文件夹名组成File对象
  23.                 File newDir = new File(target,name);
  24.                 newDir.mkdirs();//newDir  d:\\demo
  25.                 //遍历数据源目录下的全部文件
  26.                 File[] file = source.listFiles();
  27.                 for(File f : file){
  28.                         //获取遍历到的目录的文件名
  29.                         String filename = f.getName();
  30.                         //newDir+filename  d:\\demo\\新建 WinRAR ZIP 压缩文件.zip
  31.                         //组成新的目录和文件名
  32.                         File newFile = new File(newDir,filename);//复制的文件的目的
  33.                         //数据源,数组f , 目的就是newFile , 字节流读写文件
  34.                         copyFile(f,newFile);
  35.                 }
  36.         }
  37.         //定义方法,实现字节流的读写文件,传递数据源和数据目的
  38.         private static void copyFile(File source , File target){
  39.                 //创建字节流对象
  40.                 FileInputStream fis = null;
  41.                 FileOutputStream fos = null;
  42.                 try{
  43.                         fis = new FileInputStream(source);
  44.                         fos = new FileOutputStream(target);
  45.                         byte[] bytes = new byte[1024];
  46.                         int len = 0;
  47.                         while((len = fis.read(bytes))!=-1){
  48.                                 fos.write(bytes, 0, len);
  49.                         }
  50.                 }catch(IOException e){
  51.                         e.printStackTrace();
  52.                         throw new RuntimeException("复制失败");
  53.                 }finally{
  54.                         try{
  55.                                 if(fos!=null)
  56.                                         fos.close();
  57.                         }catch(IOException e){
  58.                                 throw new RuntimeException("文件写入关闭失败");
  59.                         }finally{
  60.                                 try{
  61.                                         if(fis!=null)
  62.                                                 fis.close();
  63.                                 }catch(IOException e){
  64.                                         throw new RuntimeException("文件读取关闭失败");
  65.                                 }
  66.                         }
  67.                 }
  68.         }
  69. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2