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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2018.04.26是一个值得纪念的日子,这一天我正在一如既往的写代码,做到就业班day09-04题的时候,发现了有一些不完善,于是便开始修改代码,随后便开始测试。之后便是我的噩梦,代码成功的运行了,但是我去查看我的源文件---成功的变为空(就业班至今的作业变空了),虽然文件依然健在,但是心拔凉拔凉的,已经无爱了。之后就去检查代码,平白无辜的多了十几行代码,随后我又将其删除,重新测试。成功了。给大家看一下我修改完的代码吧,因为这件事发现于昨天,问题代码没有保留。
package com.itheima.day0904;

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

public class IOUtils {
        // 定义一个工具类IOUtils,有以下方法,方法描述如下:
        // 1.copyFile2Dir(File srcFile,File destDir)
        // 参数File srcFile:要复制的源文件
        // 参数File destDir:复制产生的新文件的存储路径(目标路径)
        // 要求:将srcFile文件复制到destDir目标文件夹中(不能改变源文件的名称)
        // 2.copyDir2Dir(File srcDir,File destDir)
        // 参数File srcDir:要复制的源文件夹
        // 参数File destDir:复制产生的新文件的存储路径(目标路径)
        // 要求:将srcDir文件夹中的所有内容复制到destDir目标文件夹中(不能改变源文件的名称)

        public static void copyFile2Dir(File srcFile, File destDir) throws IOException {
                // 判断输入路径与输出路径是否相同
                String fil = srcFile.getParent();
                String fil1 = destDir.getParent();
                // 判断两个路径是否相同
                if (fil.equals(fil1)) {
                        System.out.println("路径相同");
                        return;
                }
                // 判断目标路径是否存在
                if (!destDir.exists()) {
                        // 不存在就创建文件夹
                        destDir.mkdirs();
                }
                // 获取文件名
                String fileName = destDir + "\\" + srcFile.getName();
                // 创建字节写入流
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileName));

                byte[] b = new byte[1024];
                int len;
                while ((len = bis.read(b)) != -1) {
                        bos.write(b, 0, len);
                }
                bos.close();
                bis.close();
        }

        // 2.copyDir2Dir(File srcDir,File destDir)
        // 参数File srcDir:要复制的源文件夹
        // 参数File destDir:复制产生的新文件的存储路径(目标路径)
        // 要求:将srcDir文件夹中的所有内容复制到destDir目标文件夹中(不能改变源文件的名称)

        public static void copyDir2Dir(File srcFile, File destDir) throws IOException {
                // // 判断输入路径与输出路径是否相同
                // String fil = srcFile.getParent();
                // String fil1 = destDir.getParent();
                // // 判断两个路劲是否相同
                // if (fil.equals(fil1)) {
                // System.out.println("路径相同");
                // return;
                // }
                // 判断目标路径是否存在
                if (!destDir.exists()) {
                        // 不存在就创建文件夹
                        destDir.mkdirs();
                }
                // 判断是否为文件夹
                if (srcFile.isDirectory()) {
                        // 获取所有文件及文件夹名称
                        File[] file = srcFile.listFiles();
                        // 遍历数组
                        for (File f : file) {
                                        // 判断是否是文件
                                if (f.isFile()) {
                                        // 写入文件
                                        method(destDir, f);
                                }else {
                                        //获取该文件的名称
                                        String s = f.getName();
                                        //创建文件对象(destDir为父文件夹,s为文件(或者是指向文件))
                                        File file1 = new File(destDir,s);
                                        //重新返回方法
                                        copyDir2Dir(f,file1);
                                }
                        }
                }

        }

        private static void method(File destDir, File f) throws FileNotFoundException, IOException {
                // 创建字节写入流
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f.getParent() + "\\\\" + f.getName()));
                // 创建字节输出流
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destDir + "\\\\" + f.getName()));
                // 写入数据
                byte[] b = new byte[1024];
                int len;
                while ((len = bis.read(b)) != -1) {
                        bos.write(b);
                }
                // 释放资源
                bos.close();
                bis.close();
        }
}

1 个回复

倒序浏览
飞儿iou 来自手机 中级黑马 2018-4-27 10:36:01
沙发
我中意内
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马