package copy; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * IO题目: * 完成多级文件夹复制功能(不允许使用CommonsIO) */ public class Test { public static void main(String[] args) { //给出要复制的源文件夹与目标文件夹 File src = new File("F:\\电影1"); File dest = new File("F:\\电影12"); copyDIR2DIR(src, dest); } /* * 将源文件夹src复制到目标文件夹dest */ public static void copyDIR2DIR(File src,File dest) { //在目标文件夹中创建新的源文件夹 File dest_src = new File(dest,src.getName()); dest_src.mkdirs(); //遍历源文件夹,获取当中所有的文件对象(可能是文件,也可能是文件夹) File[] fileorDirs = src.listFiles(); //使用增强for循环 for (File fileorDir : fileorDirs) { //判断是文件还是文件夹 if(fileorDir.isDirectory()) { //如果是文件夹 //将该文件夹放到目标文件夹中新的源文件夹中 File oldDir = fileorDir; File newDir = dest_src; //递归调用,复制文件夹 copyDIR2DIR(oldDir,newDir); }else { //如果是文件 //将该文件复制到目标文件夹中新的源文件夹中 File oldFile = fileorDir; File newFile = new File(dest_src,oldFile.getName()); //完成文件复制 copyFile(oldFile,newFile); } } } /* * oldFile:被复制的老文件 * newFile:复制成的新文件 * 使用最简单地一次一个字节的方式复制 */ private static void copyFile(File oldFile, File newFile) { FileInputStream fis = null; FileOutputStream fos = null; try { //创建流对象 fis = new FileInputStream(oldFile); fos = new FileOutputStream(newFile); //读入,写出 int len; byte[] by = new byte[1024]; //循环读取 while((len=fis.read(by))!=-1) { //写出字节 fos.write(by, 0, len); } }catch(IOException e) { e.printStackTrace(); }finally { try { //关闭流 fos.close(); fis.close(); } catch (Exception e) { e.printStackTrace(); } } } }
多级文件夹复制Demo
最新推荐文章于 2023-10-29 22:57:33 发布