import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Fuzhi {
public static void copy(File filename,File srcname) throws Exception{
FileInputStream fis=new FileInputStream(filename);
FileOutputStream fos=new FileOutputStream(srcname);
byte[] buf=new byte[8*1024]; //,最多输入8*1024个字符
int bytes;
while((bytes=fis.read(buf,0,buf.length))!=-1){ //数组,从哪开始,读到哪
fos.write(buf, 0, buf.length);
fos.flush();
}
fos.close();
fis.close();
}
public static void copyDirectory(File file,File file2) throws Exception{
if(!file.exists()){ //文件不存在
System.out.println("该复制文件不存在");
}else{
File[] f=file.listFiles(); //String [] f=file.list();
for(File ff:f){
File cc=new File(file2.getName());
if(!ff.isDirectory()){ //ff最底层
cc.createNewFile();
copy(ff,cc);
}else{
cc.mkdir(); //如果不是继续进行复制文件夹,进行递归调用
copyDirectory(file,cc);
}
}
}
public static void main(String[] args) throws Exception {
Fuzhi f=new Fuzhi();
File file=new File("E:\\新建1\\a.txt");
File file2=new File("E:\\新建2");
if(!file.exists()){
file.mkdirs();
}
copyDirectory(file,file2)
}
}
}
代码如上,对于此问题首先判断是复制文件还是文件夹,如果是复制文件则调用Fuzhi方法,如果是文件夹则先判断该文件夹是否有效,如果无效给出提示,如果有效显示下面所有的文件并且到最底层之前不断进行递归调用copyDirectory方法