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(); } } } } }