Java使用递归复制文件夹及文件夹
递归调用copyDir方法实现,查询源文件目录使用字节输入流写入字节数组,如果目标文件目录没有就创建目录,如果迭代出是文件夹使用字节输出流对拷文件,直至源文件目录没有内容。
/** *复制文件夹 *@paramsrcDir源文件目录 *@paramdestDir目标文件目录 */ publicstaticvoidcopyDir(StringsrcDir,StringdestDir){ if(srcRoot==null)srcRoot=srcDir; //源文件夹 FilesrcFile=newFile(srcDir); //目标文件夹 FiledestFile=newFile(destDir); //判断srcFile有效性 if(srcFile==null||!srcFile.exists()) return; //创建目标文件夹 if(!destFile.exists()) destFile.mkdirs(); //判断是否是文件 if(srcFile.isFile()){ //源文件的绝对路径 StringabsPath=srcFile.getAbsolutePath(); //取出上级目录 StringparentDir=newFile(srcRoot).getParent(); //拷贝文件 copyFile(srcFile.getAbsolutePath(),destDir); }else{//如果是目录 File[]children=srcFile.listFiles(); if(children!=null){ for(Filef:children){ copyDir(f.getAbsolutePath(),destDir); } } } }
/** *复制文件夹 * *@parampath路径 *@paramdestDir目录 */ publicstaticvoidcopyFile(Stringpath,StringdestDir){ FileInputStreamfis=null; FileOutputStreamfos=null; try{ /* 准备目录 取出相对的路径 创建目标文件所在的文件目录 */ Stringtmp=path.substring(srcRoot.length()); Stringfolder=newFile(destDir,tmp).getParentFile().getAbsolutePath(); FiledestFolder=newFile(folder); destFolder.mkdirs(); System.out.println(folder);//创建文件输入流 fis=newFileInputStream(path); //定义新路径 //创建文件输出流 fos=newFileOutputStream(newFile(destFolder,newFile(path).getName())); //创建字节数组进行流对拷 byte[]buf=newbyte[1024]; intlen=0; while((len=fis.read(buf))!=-1){ fos.write(buf,0,len); } }catch(IOExceptionex){ ex.printStackTrace(); }finally{ try{ fis.close(); fos.close(); }catch(IOExceptione){ e.printStackTrace(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。