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();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。