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(); }}
新聞熱點
疑難解答