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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package cn.itcast;

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

/*
* 文件夹复制
*/
public class Test{

        public static void main(String[] args) throws IOException {
               
                File srcDir = new File("c");
                File destDir = new File("d");
               
                copyDir1(srcDir, destDir);
        }

        public static void copyDir1(File srcDir,File destDir) throws IOException {
               
                if(!srcDir.isDirectory()) {
                        System.out.println("源文件夹不存在或者源文件夹有误");
                }
               
                if(!destDir.isDirectory()) {
                        System.out.println("目标文件夹不存在或者源文件夹有误");
                }
               
                //明确老文件夹与新文件夹,将老文件夹的东西复制到新文件夹中
                File oldDir = srcDir;
                File newDir = new File(destDir,oldDir.getName());
                //创建文件夹
                newDir.mkdirs();
               
                //获取老文件夹下所有的文件对象(文件或者文件夹)
                File[] fileorDirs = oldDir.listFiles();
               
                //遍历文件对象数组,依次获取每一个文件对象(文件或者文件夹)
                for (File fileorDir : fileorDirs) {
                       
                       
                        if(fileorDir.isFile()) {
                                //如果是文件
                                //明确确定源文件和目标文件
                                File oldFile = fileorDir;
                                File newFile = new File(newDir,oldFile.getName());
                               
                                FileInputStream fis = new FileInputStream(oldFile);
                                FileOutputStream fos = new FileOutputStream(newFile);
                               
                                byte[] bytes = new byte[1024];
                                int len;
                               
                                while((len=fis.read(bytes))!=-1) {
                                        fos.write(bytes, 0, len);
                                }
                               
                                fos.close();
                                fis.close();
                        }else {
                                //如果是文件夹
                                File inneroOldDir = fileorDir;
                                File newDir2 = newDir;
                                //递归调用复制文件夹的方法
                                copyDir1(inneroOldDir,newDir2);
                        }
                }
        }
}

3 个回复

倒序浏览
可以的,这几天刚学了递归,学习一下
回复 使用道具 举报
复习一下
回复 使用道具 举报
w1599928008 来自手机 中级黑马 2016-6-23 23:55:13
板凳
谢谢楼主分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马