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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 744919632 中级黑马   /  2015-12-21 19:59  /  571 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package ascii;

import java.io.*;


/*
* 复制文件夹
* 分析:
*                 1:目录下包含有目录和文件。
*                 2:用递归实现这个操作,判断是目录就创建。是文件就创建并拷贝。
*
*                 把d盘目录下的source目录内容拷贝到e盘目录下。
*/
public class Copy {
        public static void main(String[] args)   {
                File source = new File("c:\\source");
                File target = new File("d:\\");
                copyDir(source, target);
        }

        // 拷贝目录
        private static void copyDir(File source, File target) {
                // 判断source
                if (source.isDirectory()) {
                        // 是目录
                        // 在target下创建同名目录
                        File dir = new File(target, source.getName());
                        dir.mkdirs();
                        // 遍历source下所有的子文件,将每个子文件作为source,将新创建的目录作为target进行递归。
                        File[] files = source.listFiles();
                        for (File file : files) {
                                copyDir(file, dir);
                        }
                } else {
                        // 是文件
                        // 在target目录下创建同名文件,然后用流实现文件拷贝。
                        File file = new File(target, source.getName());
                //        file.createNewFile();
                        copyFile(source, file);
                }
        }

        // 拷贝文件
        private static void copyFile(File source, File file)   {
                // 创建流对象
                InputStream is = null;
                OutputStream os = null;
                try {
                        is = new FileInputStream(source);
                        os = new FileOutputStream(file);

                        // 基本读写操作
                        byte[] bys = new byte[1024];
                        int len = 0;
                        while ((len = is.read(bys)) != -1) {
                                os.write(bys, 0, len);
                        }
                } catch(IOException e){
                        throw new RuntimeException("复制失败");
                }finally {
                        try{
                        if (os != null) {
                                os.close();
                        }
                        }catch(IOException e){
                               
                        }
                       
                        try{
                        if (is != null) {
                                is.close();
                        }
                        }catch(IOException e){
                               
                        }
                }
        }

}


0 个回复

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