文件夹的拷贝

通过使用Java的文件字节流拷贝文件或文件夹,file1->file2

注意:

  • 无论是文件还是文件夹,都可以实现拷贝
  • file2文件夹内部的原内容继续保存且不变
  • 若文件夹file2不存在则会自动创建
  • 该函数通过递归调用实现
  • 由于使用的是文件字节流,所以无论是文本文件还是图片或视频都可以实现拷贝
java 复制代码
public static void copyDirectory(File file1,File file2) {	//拷贝函数:file1->file2
        if (!file1.exists() | file1 == null) {
            return;
        }
        if (!file2.exists()) {
            file2.mkdirs();
        }
        String name = file1.getName();
        File file3 = new File(file2.getAbsoluteFile() +"\\"+ name);

        if (file1.isFile()) {
            try (FileInputStream inputStream = new FileInputStream(file1);
                 FileOutputStream outputStream = new FileOutputStream(file3)) {
                byte[] bytes = new byte[1024];
                int len;
                while ((len = inputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, len);
                }
                return;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        file3.mkdir();
        File[] files = file1.listFiles();
        for (int i = 0; i < files.length; i++) {	//递归调用
            copyDirectory(files[i], file3);
        }

    }

测试

java 复制代码
public static void main(String[] args) {	//测试
        File file = new File("target");
        File file2 = new File("target2");	//文件夹target2的原内容不变
        copyDirectory(file,file2);
    }
相关推荐
程序员JerrySUN11 分钟前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
q5673152313 分钟前
分布式增量爬虫实现方案
开发语言·分布式·爬虫·python
勤奋的知更鸟19 分钟前
LLaMA-Factory和python版本的兼容性问题解决
开发语言·python·llama-factory
CIb0la21 分钟前
Ai自动补全编程工具:llama vscode
运维·开发语言·学习·测试工具·程序人生
风象南25 分钟前
SpringBoot的5种签到打卡实现方案
java·spring boot·后端
1candobetter31 分钟前
JAVA后端开发——多租户
java·开发语言
freyazzr1 小时前
C++八股 | Day3 | 智能指针 / 内存管理 / 内存分区 / 内存对齐
开发语言·c++
序属秋秋秋1 小时前
《C++初阶之入门基础》【普通引用 + 常量引用 + 内联函数 + nullptr】
开发语言·c++·笔记
星辰离彬1 小时前
Java 高级泛型实战:8 个场景化编程技巧
java·开发语言·后端·程序人生
筏.k1 小时前
C++ 网络编程(10) asio处理粘包的简易方式
java·网络·c++