package HomeWork; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class WorkTest { public static void main(String[] args) { //在當前目錄下建立一個外層目錄 File dir = new File("F:\\複製後的文件夾(4.20做業)"); dir.mkdir(); //調用方法複製文件 getFileList("F:\\筆記\\第1周\\2.24", "F:\\複製後的文件夾(4.20做業)"); } /** * 執行復制操做 * @param fromFile 源目錄 * @param endsFile 目標目錄 */ private static void getFileList(String fromFile, String endsFile) { File file = null;//先建立一個文件對象(被複制對象) File file1 = null; //被複制的文件 FileInputStream fis = null; DataInputStream dis = null; File file2 = null; //做爲複製後文件的暫時緩存 FileOutputStream fos = null; DataOutputStream dos = null; try { file = new File(fromFile);//建立源文件對象 File[] files = file.listFiles();//得到文件列表 for (int i = 0; i < files.length; i++){ if (files[i].isDirectory()){ //判斷是否爲目錄 File dir = new File(endsFile + "\\" + files[i].getName()); //建立目錄 dir.mkdir(); //若是是目錄就建立 //遞歸上一級目錄 getFileList(fromFile + "\\" + files[i].getName(), endsFile + "\\" + files[i].getName()); } else{ //建立源目錄下的文件對象 file1 = new File(files[i].toString()); fis = new FileInputStream(file1); dis = new DataInputStream(fis); //建立目標目錄下的文件對象 file2 = new File(endsFile + "\\" + files[i].getName()); fos = new FileOutputStream(file2); dos = new DataOutputStream(fos); int len = 0; while ((len = dis.read()) != -1){ //將源目錄下的文件內容複製到目標目錄下的文件中 dos.write(len); } System.out.println(endsFile + "\\" + files[i].getName());//把複製後的文件名及路徑打印在控制檯上,方便觀察 } } } catch (IOException e){ e.printStackTrace(); }finally{ if(fis != null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if(dis != null){ try { dis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }