会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132463个问题
JAVA 全系列/第四阶段:网页编程和设计/Jquery(旧) 12811楼
JAVA 全系列/第十八阶段:亿级高并发电商项目_架构/编码(旧)/电商:基于SpringSession实现登录系统 12812楼
WEB前端全系列/第一阶段:HTML5+CSS3模块/CSS3新特性 12813楼
Python 全系列/第十阶段:Flask百战电商后台项目/Flask百战电商后台项目 12814楼
JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 12816楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 12818楼
Python 全系列/第五阶段:数据库编程/python操作mysql(旧) 12820楼

package cn.io;

import java.io.*;

/**
 * 测试复制文件夹
 */
public class TestCopyFile {
    public static void main(String[] args) {
        //File srcFile = new File("D:\\答辩准备.docx");
        //File targetFile = new File("E:\\答辩准备.docx");
        //先复制一个文件
        //copyFile(srcFile,targetFile);
        //复制正个目录
        File srcDir = new File("E:\\百战程序员");
        File targetDir = new File("D:\\百战程序员");
        copyDir(srcDir,targetDir);
    }

    //复制整个目录
    public static void copyDir(File srcDir,File targetDir){
        //(1)如果目标目录不存在,则需要使用File类的方法进行创建目录
        if (!targetDir.exists()){
            targetDir.mkdir();
        }
        //(2)获取指定目录下的所有File对象
        File[] files = srcDir.listFiles();

        //(3)遍历分解指定目录下的文件
        for (File file :files){
            if (file.isFile()){
                /**
                 * 调用赋值文件方法
                 * 1.srcDir--->E:\\API   拼接    E:\\Api\\XXXXX.xxx文件
                 * 2.targetDir--->D:\\API   拼接    E:\\Api\\XXXXX.xxx文件
                 */
                copyFile(new File(srcDir+"\\"+file.getName()),new File(targetDir+"\\"+file.getName()));

            }else {
                copyDir(new File(srcDir+"\\"+file.getName()),new File(targetDir+"\\"+file.getName()));
            }
        }

    }

    /**
     * 复制一个文件
     * @param srcFile
     * @param targetFile
     */
    public static void copyFile(File srcFile, File targetFile){
        //(1)提高读取效率,从数据源
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(new FileInputStream(srcFile));
            //(2)提高写入效率,写到目的地
            bos = new BufferedOutputStream(new FileOutputStream(targetFile));
            //(3)边读边写
            byte[] buf = new byte[1024];        //中转站
            int len = 0 ;
            while((len=bis.read())!=-1){
                bos.write(buf,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //(4)关闭
            try {
                if (bos!=null){
                    bos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (bis!=null){
                    bis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}

老师,我执行这段代码,没有报错,但是硬盘差点爆了,硬盘快满了,程序还没有停,是哪里出问题了吗?

JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 12822楼
JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 12824楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 12825楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637