黑马程序员技术交流社区

标题: 通过io流复制文件夹和文件 [打印本页]

作者: ↙五线谱╲    时间: 2013-10-28 20:10
标题: 通过io流复制文件夹和文件
   
      创建类CopyFile ,在该类中创建copy()方法,该方法接受文件数组和目标文件夹两个参数,如果目标文件夹不存在,则调用mkdir()方法创建文件夹,然后在循环中将文件数组中的每个文件对象写到目标文件夹中。

package CopyFile;
import java.io.*;
public class CopyFile { //创建类CopyFile用于复制文件夹中的文件
       public static void copy(File[] f1,File file ) {
                     if(!file.exists())  //如果文件夹不存在
                                 file.mkdir();  //新建文件夹
                     for(int i=0;i<f1.length;i++){
                                 if(f1[i].isFile()){  //判断f1[i]是否是文件类型
                                     try{
                                           FileInputStream fis = new FileInputStream(f1[i]);  //创建文件输出流对象fis
                                                   //创建文件输出流对象out
                                           FileOutputStream out = new FileOutputStream(new File(file.getPath()+file.separator+f1[i].getName()));
                                           int count = fis.available(); //求数据项的数目
                                           byte[] data = new byte[count];
                                           if((fis.read(data))!=-1){ //判断是否读到了fis的末尾
                                                       out.write(data);   //复制文件内容,向输出流对象out中写数据
                                            }
                                           out.close(); //关闭输出流对象out
                                           fis.close(); //关闭输入流对象fis
                                     }catch(Exception e){ //抛出异常
                                             e.printStackTrace();
                               }
                   }
                   if(f1[i].isDirectory()){    //函数isDirectory()是用来判断是否是文件夹类型的,如果是文件夹类型则完成下列操作
                                                   File des = new File(file.getPath()+File.separator+f1[i].getName()); //创建File类对象des用来
                                                  //存储目标文件夹的路径 separator 是分割符,此处是调用File类的分隔符。
                                                  des.mkdir(); //在目标文件夹中创建相同的文件夹
                                                  copy(f1[i].listFiles(),des); //递归调用的方法本身
                   }
              }   
          }
        public static void main(String[ ] args){
                          File sourFile = null;
                          File desFile = null;
                          String sourFolder = "D:/JavaTest/hello"; //可以修改源文件夹路径
                          String desFolder = "D:/JavaTest/copy";  //可以修改的目标文件夹路径
                          sourFile = new File(sourFolder);
                                if(!sourFile.isDirectory()||!sourFile.exists()){ //判断(源文件夹)和(源文件)是否存在
                                             System.out.println("源文件夹不存在!!!");
                                 }
                         desFile = new File(desFolder);
                         desFile.mkdir(); //创建目标文件夹
                         copy(sourFile.listFiles(),desFile);  //调用copy方法,将源文件复制到目标文件夹中
                         System.out.println("文件夹复制成功!!!"); //输出提示信息
                      }
}




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