复制单级文件夹下的文件

案例描述:

在本地 D:\iofile 文件夹目录下有以下几类文件,把该文件夹全部复制到另外一个位置( C:\iofile )

步骤分析:

  • 1.描述一个数据源文件夹
  • 2.获取数据源文件夹的名称
  • 3.拼接一个目的地文件夹路径
  •   File(模块名称 + 数据源文件夹名称)
  • 4.在目的地创建该文件夹
  • 5.数据源文件路径:
  •   数据源文件夹.listfiles
  •   所有的文件的File对象
  • 6.目的地文件路径:
  •   目的地文件夹 + 数据源文件名称
  • 7.完成文件复制

File 类  缓冲字节流(BufferedInputStream、BufferedOutputStream)

先看上面两个,方便更好地读懂下面的代码

import java.io.*;
public class Copyfolder02 {
    public static void main(String[] args) throws IOException{
        // 1.描述一个数据源文件夹
        File srcFolder = new File("D:\\iofile");
        // 2.获取数据源文件夹的名称
        String srcFolderName = srcFolder.getName();   // iofile
        // 3.拼接一个目的地文件夹路径
        File destFolder = new File("C:\\", srcFolderName);  // C:\iofile
        // 4.在目的地创建该文件夹
        if (!destFolder.exists()){       // 是否真实存在的路径
            destFolder.mkdir();   // 创建一级文件夹
        }
        // 5.获取数据源文件路径
        File[] srcFiles = srcFolder.listFiles(); //返回一个抽象路径名数组,包含文件夹下所有文件名
        for (File srcFile : srcFiles) {
            String srcFileName = srcFile.getName(); // 拿到每一个文件名
            // 描述目的地文件路径
            File destFile = new File(destFolder, srcFileName); // 拼接 (C:\iofile + 文件名)
            // 6.完成复制
            copyFile(srcFile, destFile);
        }
    }
    // 复制全部文件
    public static void copyFile(File srcFile, File destFile) throws IOException {
        FileInputStream fis = new FileInputStream(srcFile);
        BufferedInputStream bis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream(destFile);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        // 缓冲流一次读写一个字节数组
        byte[] bytes = new byte[8192];  // 字符数组
        int len;
        while ((len = bis.read(bytes)) != -1){  //
            bos.write(bytes,0,len);     //
        }
        bis.close();
        bos.close();
    }
}

运行代码后,全部文件将会被复制到 C:\iofile 文件夹下:

 

posted @ 2022-05-28 20:46  鹿先森JIAN  阅读(42)  评论(0编辑  收藏  举报