写一个方法实现复制一个不为空的目录:
首先都知道,目录下可能有目录和文件,目录之下有会如此,就得用递归,同时,复制文件的时候也得用到字符流进行赋值:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyDirectory {
public static void main(String[] args) throws IOException {
File file1=new File("F:/a/新建文件夹");
File file2=new File("F:/a/新建文件夹2");//创建一个新目录
if(!file2.exists()){
file2.mkdirs();
}
copyDirectory(file1,file2);
}
public static void copyFile(File file1,File file2){//复制文件的方法
try(
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);//创建字符输入输出流
){
byte [] data=new byte[12];
int d=-1;
while((d=fis.read(data))!=-1){
fos.write(data,0,d);//将其复制到另一个文件里
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void copyDirectory(File file1,File file2) throws IOException{//复制目录的方法
if(!file1.exists()){
System.out.println("该复制文件不存在");
}
else{
File [] fs=file1.listFiles();
for(File file:fs){
File copy=new File(file2,file.getName());//创建同名的文件或目录
System.out.println(copy);
if(!file.isDirectory()){
copy.createNewFile();
copyFile(file,copy);//是目录的话递归下去,继续创建目录下的文件或目录
}
else{
copy.mkdir();
copyDirectory(file,copy);//是文件的话,调用方法,复制文件
}
}
}
}
}