A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package cn.itcast.test;
/*
*  JAVA技术,实现单级文件夹复制
*    数据源 : c:\\demo
*    目的 :  d:
*   
*  操作文件夹  File类
*  复制文件,读取写入文件  IO流技术  纯字节流
*  
*  实现步骤
*    1. 在数据目的创建出和数据源一样的文件夹名
*       获取到数据源的文件夹名  getName()
*       new File("d:\\demo").mkdirs()
*       d:\\File      demo String
*       组成File对象,使用File父路径,字符串子路径
*      
*    2. 复制文件,复制的数据源目录,复制到数据目的文件夹中
*      FileInputStream(c:\\demo\\1.txt)
*      FileOutputStream(d:\\demo\\1.txt)
*      
*      遍历数据源文件夹,获取到文件夹中的文件
*      获取到数据源文件名
*      数据源的文件名,数据目的文件夹,组合File对象
*      
*   3. IO纯字节流复制文件
*   
*   
*   
*/
import java.io.*;
public class CopyDir {
        public static void main(String[] args) {
                copyDir(new File("c:\\demo"), new File("d:"));
        }
        /*
         * 定义方法,实现文件夹复制
         */
         public static void copyDir(File source,File targer){
                 //使用File对象方法getName获取数据源文件夹名字
                 String sourceDirName = source.getName();
                // System.out.println(sourceDirName);
                 //将数据目的,和数据源文件夹名组成新的File对象
                 File newDirTarget = new File(targer, sourceDirName);
                 newDirTarget.mkdirs();
                 //遍历数据源文件夹
                 File[] sourceFiles = source.listFiles();
                 for(File  f : sourceFiles){
                         //获取出数据源文件名
//                         System.out.println(f.getName());
                         //数据目的文件夹,数据源的文件名,组成新File对象
                         String sourceFileName = f.getName();
                         File newFileTarget = new File(newDirTarget, sourceFileName);
                         //调用copyFile方法,传递File对象
                         copyFile(f,newFileTarget);
                 }
         }
         
         /*
          * 定义方法,实现文件复制
          * IO流对象构造方法,都接收File对象
          * 带异常处理
          */
          public static void copyFile(File source,File target){
                  FileInputStream fis = null;
                  FileOutputStream fos = null;
                  try{
                          fis = new FileInputStream(source);
                          fos = new FileOutputStream(target);
                          byte[] bytes = new byte[1024];
                          int len = 0 ;
                          while((len = fis.read(bytes))!=-1){
                                  fos.write(bytes, 0, len);
                          }
                  }catch(IOException ex){
                          throw new RuntimeException("文件夹复制失败");
                  }finally{
                          try{
                                        if(fos!=null)
                                                fos.close();
                                }catch(IOException ex){
                                        throw new RuntimeException("资源关闭失败");
                                }finally{
                                        try{
                                                if(fis!=null)
                                                        fis.close();
                                        }catch(IOException ex){
                                                throw new RuntimeException("资源关闭失败");
                                        }
                           }
                  }
          }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马