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

不念不忘少年蓝@ 2024-04-17 06:38 213阅读 0赞

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

文章目录

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

?需求

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

⭐思路

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

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

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

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

✨代码

  1. import java.io.*;
  2. public class AddList {
  3. public static void main(String[] args) {
  4. // 封装目录
  5. File srcDir = new File("F:\\a");
  6. // 获取该目录下所有的txt文件
  7. File[] txtFiles = srcDir.listFiles(file -> file.getName().endsWith(".txt"));
  8. // 封装目的地
  9. File destDir = new File("F:\\b");
  10. if (!destDir.exists()) {
  11. destDir.mkdirs();
  12. }
  13. for (File txtFile : txtFiles) {
  14. try {
  15. // 构建目标文件对象
  16. File targetFile = new File(destDir, txtFile.getName());
  17. // 创建输入输出流对象并复制数据
  18. InputStream is = new FileInputStream(txtFile);
  19. OutputStream os = new FileOutputStream(targetFile);
  20. byte[] buffer = new byte[1024];
  21. int length;
  22. while ((length = is.read(buffer)) > 0) {
  23. os.write(buffer, 0, length);
  24. }
  25. // 关闭输入输出流
  26. is.close();
  27. os.close();
  28. System.out.println(txtFile.getName() + " 文件已经复制到 " + targetFile.getPath());
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33. System.out.println("所有txt文件的内容已经拷贝到b文件夹中。");
  34. }
  35. }

✨效果

在这里插入图片描述

在这里插入图片描述

?如果要复制的不是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 {

    1. public static void main(String[] args) {
    2. File sourceDir = new File("sourceFolderPath"); // 源文件夹路径
    3. File destDir = new File("destinationFolderPath"); // 目标文件夹路径
    4. if (!destDir.exists()) {
    5. destDir.mkdirs(); // 如果目标文件夹不存在,则创建
    6. }
    7. copyFiles(sourceDir, destDir);
    8. System.out.println("所有文件已经成功复制到目标文件夹中。");
    9. }
    10. private static void copyFiles(File source, File destination) {
    11. if (source.isFile()) {
    12. try (FileInputStream fis = new FileInputStream(source);
    13. FileOutputStream fos = new FileOutputStream(new File(destination, source.getName()))) {
    14. byte[] buffer = new byte[1024];
    15. int length;
    16. while ((length = fis.read(buffer)) > 0) {
    17. fos.write(buffer, 0, length); // 将文件内容写入目标文件夹中的对应文件
    18. }
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. }
    22. } else if (source.isDirectory()) {
    23. File[] files = source.listFiles();
    24. if (files != null) {
    25. for (File file : files) {
    26. File newDestination = new File(destination, file.getName());
    27. if (file.isDirectory()) {
    28. newDestination.mkdirs(); // 如果当前文件是文件夹,则在目标文件夹中创建对应的文件夹
    29. }
    30. copyFiles(file, newDestination); // 递归复制子文件夹中的文件
    31. }
    32. }
    33. }
    34. }

    }

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

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

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读