package cn.itcast_05;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:复制多极文件夹 * * 数据源:G:/Java/demos * 目的地:G:// * * 分析: * A:封装数据源File * B:封装目的地File * C:判断该File是文件还是文件夹 * a:是文件夹 * 就在目的地目录下创建该文件夹 * 获取该File对象下的所有文件或者文件夹File对象 * 遍历得到每一个File对象 * 回到C * b:是文件 * 就复制(字节流) */public class copyFolderDemo { public static void main(String[] args) throws IOException { // 封装数据源 File srcFolder = new File("D://a//demos"); // 封装目的地 File destFolder = new File("D://"); // 复制文件夹功能 copyFolder(srcFolder, destFolder); } /** * 复制文件夹方法 * * @param srcFolder * 数据源 * @param destFolder * 目的地 */ public static void copyFolder(File srcFolder, File destFolder) throws IOException { // 判断该File是文件还是文件夹 if (srcFolder.isDirectory()) { // 文件夹 File newFolder = new File(destFolder, srcFolder.getName()); newFolder.mkdir(); // 获取该File对象下的所有文件或者文件夹File对象 File[] fileArray = srcFolder.listFiles(); // 遍历得到每一个File对象 for (File file : fileArray) { copyFolder(file, newFolder); } } else { // 文件 File newFile = new File(destFolder, srcFolder.getName());// G:/d.txt // 复制文件功能 copyFile(srcFolder, newFile); } } /** * 复制文件方法 * * @param srcFolder * 数据源 * @param newFile * 目的地 */ public static void copyFile(File srcFolder, File newFile) throws IOException { // 封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcFolder)); // 封装目的地 BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(newFile)); // 读写数据 byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); bos.flush(); } // 释放资源 bos.close(); bis.close(); }}
新闻热点
疑难解答