复制单级文件夹下的文件
案例描述:
在本地 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 文件夹下: