讲解把一个文件夹里面的内容复制到另一个文件夹中的操作

🎊专栏【Java小练习】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🍔需求
    • ⭐思路
    • ✨代码
    • ✨效果
  • 🎄如果要复制的不是txt文件,怎么办
    • ⭐思路

🍔需求

编写程序,将某个目录下所有txt文件的内容拷贝到一个新的目录中。

⭐思路

这段代码的主要思路是将一个文件夹中的所有以".txt"结尾的文件复制到另一个文件夹中。

以下是该代码的实现步骤:

首先,我们使用File类封装源文件夹路径和目标文件夹路径,分别对应"a"和"b"文件夹。
使用listFiles()方法获取源文件夹中以".txt"结尾的所有文件,并将它们存储在一个File数组中。
创建目标文件夹,如果目标文件夹不存在的话,使用mkdirs()方法创建。
遍历源文件夹中的每个文件:
使用BufferedReader读取每个文件的内容。
使用BufferedWriter将读取到的内容写入目标文件夹中的文件。
关闭输入输出流和文件读写器。
完成所有文件的拷贝后,在控制台打印出拷贝完成的消息。

总体来说,代码通过遍历源文件夹中的每个文件,并逐行读取其内容,然后将内容写入目标文件夹中的相应文件中。这样就实现了从一个文件夹向另一个文件夹的文件复制功能。

✨代码

import java.io.*;

public class AddList {
    public static void main(String[] args) {
        // 封装目录
        File srcDir = new File("F:\\a");
        // 获取该目录下所有的txt文件
        File[] txtFiles = srcDir.listFiles(file -> file.getName().endsWith(".txt"));
        // 封装目的地
        File destDir = new File("F:\\b");
        if (!destDir.exists()) {
            destDir.mkdirs();
        }

        for (File txtFile : txtFiles) {
            try {
                // 构建目标文件对象
                File targetFile = new File(destDir, txtFile.getName());
                // 创建输入输出流对象并复制数据
                InputStream is = new FileInputStream(txtFile);
                OutputStream os = new FileOutputStream(targetFile);
                byte[] buffer = new byte[1024];
                int length;
                while ((length = is.read(buffer)) > 0) {
                    os.write(buffer, 0, length);
                }
                // 关闭输入输出流
                is.close();
                os.close();
                System.out.println(txtFile.getName() + " 文件已经复制到 " + targetFile.getPath());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("所有txt文件的内容已经拷贝到b文件夹中。");
    }
}

✨效果

在这里插入图片描述

在这里插入图片描述

🎄如果要复制的不是txt文件,怎么办

如果我们复制粘贴的不是txt文件,可能存在其他特殊情况,特殊情况需要特殊对待
这种情况要考虑复制文件夹的情况

⭐思路

获取源文件夹和目标文件夹的路径。

  • 创建目标文件夹。
    使用File类的mkdirs()方法创建目标文件夹,确保父文件夹也被创建。

  • 遍历源文件夹中的所有文件和子文件夹。
    使用File类的listFiles()方法获取源文件夹中的所有文件和文件夹。
    遍历文件和文件夹列表。

  • 如果是文件,则进行文件复制。
    使用File类的InputStream和OutputStream创建输入和输出流。
    使用byte数组作为缓冲区,从输入流读取数据,并将数据写入输出流。

  • 如果是文件夹,则进行递归复制。
    递归调用复制文件夹的方法,传递当前子文件夹的路径作为新的源文件夹路径。

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

public class FileCopy {
    public static void main(String[] args) {
        File sourceDir = new File("sourceFolderPath"); // 源文件夹路径
        File destDir = new File("destinationFolderPath"); // 目标文件夹路径

        if (!destDir.exists()) {
            destDir.mkdirs(); // 如果目标文件夹不存在,则创建
        }

        copyFiles(sourceDir, destDir);

        System.out.println("所有文件已经成功复制到目标文件夹中。");
    }

    private static void copyFiles(File source, File destination) {
        if (source.isFile()) {
            try (FileInputStream fis = new FileInputStream(source);
                 FileOutputStream fos = new FileOutputStream(new File(destination, source.getName()))) {
                byte[] buffer = new byte[1024];
                int length;
                while ((length = fis.read(buffer)) > 0) {
                    fos.write(buffer, 0, length); // 将文件内容写入目标文件夹中的对应文件
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (source.isDirectory()) {
            File[] files = source.listFiles();
            if (files != null) {
                for (File file : files) {
                    File newDestination = new File(destination, file.getName());
                    if (file.isDirectory()) {
                        newDestination.mkdirs(); // 如果当前文件是文件夹,则在目标文件夹中创建对应的文件夹
                    }
                    copyFiles(file, newDestination); // 递归复制子文件夹中的文件
                }
            }
        }
    }
}

这样子,我们就完成了复制粘贴操作

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233113.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CCF 202104-2:邻域均值--C++

#include<iostream> #include<bits/stdc.h>using namespace std;int A[601][601]; int n;//长宽都为n个像素double FindNeighborSum(int i,int j,int r,int A[][601]) {int sum0;//像素和 int gs0;//领域 中的像素个数 for(int xi-r;x<ir;x)//找到每一个领域像素…

springboot3 liquibase SQL执行失败自动回滚,及自动打tag

一&#xff1a; 自动执行回滚&#xff0c; 已执行成功的忽略&#xff0c;新sql执行失败则执行新sql文件中的回滚sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

免费的数据采集软件,最新免费的几款数据采集软件【2024】

在当今数字化时代&#xff0c;数据是企业决策和业务发展的关键。而如何高效获取数据成为许多企业和研究机构的关注焦点。本文将深入探讨数据采集软件的种类。帮助大家选择最适合自己需求的数据采集工具。 数据采集软件种类 在众多数据采集软件中&#xff0c;有一类强大而多样…

工作实践中如何使用ThreadLocal?

主要作用 多线程问题主要是多个线程共享一个对象导致的&#xff0c;我们不让他共享就行了&#xff0c;每个线程保存一份自己的对象&#xff0c;自己玩自己的对象&#xff0c;就不会出现线程问题了。 ThreadLocal这个作用就是让线程自己独立保存一份自己的变量副本。每个线程都…

计算和传输背后的时空观

吞吐和速度(率)经常被混淆&#xff0c;当提到 100Gbps 网卡时&#xff0c;“它很快” 的意义可能只是 “它很多” 100Gbps 指 1s 内发送的比特数为 100G&#xff0c;如果在这 1s 内塞入更多比特&#xff0c;以下是两种方式&#xff1a; 显然&#xff0c;上面是更多&#xff…

TypeScript入门实战笔记 -- 开篇 为什么要选择 TypeScript ?

typescript 在线编辑器http://typescript.p2hp.com/play?#code/JYOwLgpgTgZghgYwgAgJIFUDO1Uhge2QG8AoZc5YAEwC5kQBXAWwCNoBuMikOJiOzGCigA5pwrI4ANzhg4UAPwChozgF8SmmAxAIwwfCGRYcefAAoADlHyXMdDNii4CASmJdyCQ5nwAbCAA6P3wRKxs7ABpkAHJrW0wY1xINEhNnM3MiSlpkAEZonj46GIBrROQ1…

Python:核心知识点整理大全11-笔记

目录 ​编辑 6.2.4 修改字典中的值 6.2.5 删除键—值对 注意 删除的键—值对永远消失了。 6.2.6 由类似对象组成的字典 6.3 遍历字典 6.3.1 遍历所有的键—值对 6.3.2 遍历字典中的所有键 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xff1a; 6.…

排序:归并排序

目录 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 思路分析&#xff1a; 代码分析&#xff1a; 划分区间思路&#xff1a; 代码思路分析&#xff1a; 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff…

《Kafka权威指南》读书笔记

《Kafka权威指南》第一、三、四、六章&#xff0c;是重点。可以多看看。 一、 Kafka的组成 kafka是一个发布与订阅消息系统消息&#xff1a;kafka的数据单元称为"消息"。可以把消息看成是数据库中的一个"数据行"。 消息的key&#xff1a;为key生成一个一…

鸿蒙开发组件之Image

Image组件加载图片方式有三种&#xff1a; 1、网络地址加载 直接Image(xxxx),添加上图片的网络地址就可以了。注意&#xff1a;真机、模拟题调试需要申请"ohos.permission.INTERNET"权限 Image(https://xxxxxxx) 2、PixelMap格式加载像素图 Image(PixelMapObjec…

【小沐学Python】Python实现语音识别(vosk)

文章目录 1、简介1.1 vosk简介1.2 vosk模型1.3 vosk服务 2、安装3、测试3.1 命令行测试3.2 代码测试 结语 1、简介 https://alphacephei.com/vosk/index.zh.html Vosk 是一个语音识别工具包。 1.1 vosk简介 支持二十种语言 - 中文&#xff0c;英语&#xff0c;印度英语&#…

Mac虚拟机CrossOver23破解版下载和许可证下载

CrossOver Mac Mac 和 Windows 系统之间的兼容工具。使 Mac 操作系统的用户可以运行 Windows 系统的应用&#xff0c;从办公软件、实用工具、游戏到设计软件&#xff0c; 您都可以在 Mac 程序和 Windows 程序之间随意切换。 系统要求 运行macOS的基于Intel或Apple Silicon 的…

【原创】【一类问题的通法】【真题+李6卷6+李4卷4(+李6卷5)分析】合同矩阵A B有PTAP=B,求可逆阵P的策略

【铺垫】二次型做的变换与相应二次型矩阵的对应&#xff1a;二次型f&#xff08;x1&#xff0c;x2&#xff0c;x3&#xff09;xTAx&#xff0c;g&#xff08;y1&#xff0c;y2&#xff0c;y3&#xff09;yTBy ①若f在可逆变换xPy下化为g&#xff0c;即P为可逆阵&#xff0c;有P…

【SpringBoot篇】5种类型参数传递json数据传参的操作

&#x1f38a;专栏【SpringBoot】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;普通参数&#x1f33a;POJO参数&#x1f33a;嵌套…

Java面试遇到的一些常见题

目录 1. Java语言有几种基本类型&#xff0c;分别是什么&#xff1f; 整数类型&#xff08;Integer Types&#xff09;&#xff1a; 浮点类型&#xff08;Floating-Point Types&#xff09;&#xff1a; 字符类型&#xff08;Character Type&#xff09;&#xff1a; 布尔类…

Unity中Batching优化的GPU实例化(4)

文章目录 前言一、构建需要实例化的额外数据二、在顶点着色器&#xff0c;将实例化 ID 从 appdata 存入 v2f 传给片元着色器三、在片断着色器中访问具体的实例化变量三、使用代码修改Shader材质属性&#xff0c;实现GPU实例化后不同对象颜色不同的效果1、在C#测试脚本生成小板凳…

Redis 环境搭建2

文章目录 第2关&#xff1a;使用 Redis 第2关&#xff1a;使用 Redis 本文是接着上篇文章写的第二关代码&#xff0c;部分人再进入第二关时不会保留第一关的配置的环境&#xff0c;可以通过下面一句代码进行检验。 redis-cli -p 7001 -c如果进入到了redis界面就是有环境&…

Android 分享小结

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、微信 分享 三、 QQ 、QQ空间&#xff08;Qz…

2024 年顶级的 Android 系统修复软件与方法

您是否正在寻找可以修复 PC 上 Android 操作系统的工具&#xff1f;这是我们精选的最好的 Android 系统修复软件&#xff01; Android 是世界著名的智能手机操作系统。全世界有数百万人使用这个操作系统&#xff0c;这使得它安全可靠。然而&#xff0c;这仍然不能使它完美无缺…

STM32之SPI总线

一、SPI总线概述 1、SPI总线介绍 SPI是一种通信协议&#xff0c;它是摩托罗拉公司研发出来的一种通信协议&#xff0c;就有自己的特点&#xff08;串行&#xff0c;并行&#xff0c;单工&#xff0c;半双工&#xff0c;全双工&#xff0c;同步异步&#xff09;。它主要应用于音…