首页 > 编程语言 > 详细

Java - IO流 案例之递归复制文件及文件夹

时间:2021-06-14 23:32:44      阅读:23      评论:0      收藏:0      [点我收藏+]
// 这个是个入口文件
package
com.fmg.CopyHomework; import java.io.File; public class Copy { public static void main(String[] args) { File copyFrom = new File("E:\\JAVA"); String copyFromStr = copyFrom.getPath(); // E:\JAVA File copyTo = new File("E:\\test"); String copyToStr = copyTo.getPath(); // E:\test // 判断是否存在 if (!copyTo.exists()) { copyTo.mkdir(); } // 开始复制 beginCopy(copyFromStr, copyToStr); } // 参数 复制的原路径, 复制的目标路径 public static void beginCopy(String from, String to) { File fromFile = new File(from); // 得到由名字组成的字符串数组 String[] fileList = fromFile.list(); for (int i = 0; i < fileList.length; i++) { File tempFile = new File(from + "\\" + fileList[i]); if (tempFile.isFile()) { // 是一个文件,直接复制 FileReadTool frt = new FileReadTool(); byte[] bytes = frt.read(tempFile.getPath()); FileWriterTool fwt = new FileWriterTool(); fwt.writer(bytes, to + "\\" + fileList[i], false); } else { // 是一个文件夹, 调用递归 复制 // 1. 判断文件夹是否存在 如果不存在就创建一个文件夹 File copyTo = new File(to + "\\" + fileList[i]); if (!copyTo.exists()) { copyTo.mkdir(); } // 2. 获取需要复制的根路径 File copyFrom = new File(from + "\\" + fileList[i]); String copyFromStr = copyFrom.getPath(); // 3. 获取复制到的根路径 String copyToStr = copyTo.getPath(); // 4. 调用递归 开始复制 beginCopy(copyFromStr, copyToStr); } } } }

 

入口文件会引用连个工具类, 自己封装的, 一个读取文件的类, 一个写入文件的类

// 读取工具

package com.fmg.CopyHomework;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileReadTool {
    public byte[] read(String road) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(road);
            byte[] bytes = new byte[fis.available()];
            fis.read(bytes);
            fis.close();
            return bytes;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return new byte[1];
    }
}

 

// 写入工具

package com.fmg.CopyHomework;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 接收三个参数
 * 1. 要输出的字节流
 * 2. 输出的路径
 * 3. 是否使用追加输出
 */
public class FileWriterTool {
    public void writer (byte[] bytes, String road, boolean boo){
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(road, boo);
            try {
                fos.write(bytes);
                fos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

来自小白的学习日历!!!

 

Java - IO流 案例之递归复制文件及文件夹

原文:https://www.cnblogs.com/l24118028/p/14883458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!