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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© houweicheng 中级黑马   /  2015-8-14 23:56  /  191 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package copyrename;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
* 源数据:C:\\源文件
* 目的地:d:\\源文件
* 分析
*    a:获取源文件数组对象
*    b:遍历文件数组对象
*    c:判断是否文件夹
*                    是文件夹:
*                            获取数组对象
*                            遍历
*                                    回到c判断
*                            创建文件夹
*                    不是文件夹:复制新文件
*
*/
public class CopyDemo {
        public static void main(String[] args) throws IOException {
                File ifile = new File("c:\\源文件");
                File ofile = new File("d:\\");
                diguicopy(ifile, ofile);
        }

        // 递归法复制多层文件、文件夹
        public static void diguicopy(File file, File destnation) throws IOException {
                // 在目的地创建该文件夹
                File newfolder = new File(destnation, file.getName());
                newfolder.mkdir();
                // 获取文件对象数组
                File[] files = file.listFiles();
                // 遍历该对象数组
                for (File f : files) {
                        if (f.isDirectory()) {                                
                                //递归
                                diguicopy(f, newfolder);

                        } else {
                                //高效字节数组缓冲流
                                BufferedInputStream bis = new BufferedInputStream(
                                                new FileInputStream(f));
                                BufferedOutputStream bos = new BufferedOutputStream(
                                                new FileOutputStream(new File(newfolder, f.getName())));
                                int b = 0;
                                byte[] by = new byte[1024];
                                while ((b = bis.read(by)) != -1) {
                                        bos.write(by, 0, b);
                                }
                                bos.close();
                                bis.close();
                        }
                }
        }
}

0 个回复

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