package com.dragon.java.newcopyfile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Test { public static void main(String args[]) { File file = new File("f:/Exercises"); File file2 = new File("f:/book"); copyFile(file, file2); } // 遞歸方法 public static void copyFile(File file, File file2) { // 當找到目錄時,創建目錄 if (file.isDirectory()) { file2.mkdir(); File[] files = file.listFiles(); for (File file3 : files) { // 遞歸 copyFile(file3, new File(file2, file3.getName())); } //當找到文件時 } else if (file.isFile()) { File file3 = new File(file2.getAbsolutePath()); try { file3.createNewFile(); copyDatas(file.getAbsolutePath(), file3.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } } // 復制文件數據的方法 public static void copyDatas(String filePath, String filePath1) { FileInputStream fis = null; FileOutputStream fos = null; try { // 字節流 fis = new FileInputStream(filePath); fos = new FileOutputStream(filePath1); byte[] buffer = new byte[1024]; while (true) { int temp = fis.read(buffer, 0, buffer.length); if (temp == -1) { break; } else { fos.write(buffer, 0, temp); } } } catch (IOException e) { System.out.println(e); } finally { try { fis.close(); fos.close(); } catch (IOException e) { System.out.println(e); } } } }