复制文件夹的函数copy():
private static void copy(File[] files,File dir){
if(!dir.exists()){
dir.mkdir();
}
for(int i=0;i<files.length;i++){
if(files[i].isFile()){
try{
FileInputStream fis=new FileInputStream(files[i]);
FileOutputStream out =new FileOutputStream(dir.getPath()+
File.separator+files[i].getName());
int count=fis.available();
byte[] data=new byte[count];
if((fis.read(data))!=-1){
out.write(data);
}
fis.close();
out.close();
}
catch(Exception e){
e.printStackTrace();
}
}
if(files[i].isDirectory()){
File desDir=new File(dir.getPath()+File.separator+files[i].getName());
desDir.mkdir();
copy(files[i].listFiles(),desDir);
}
}
}
递归删除:
private static void deleteFile(File file){
//判断文件是否存在
if(!file.exists()){
System.out.println("File does not exist!");
return;
}
//如果是文件直接删除
if(file.isFile()){
boolean rs=file.delete();
if(rs)
System.out.println(file.getAbsolutePath()+" Delete success!");
else
System.out.println(file.getAbsolutePath()+" Delete failed!");
}
//如果是文件夹首先判断是否为空,如果为空直接删除,否则递归操作
else if(file.isDirectory()){
File[] files=file.listFiles();
if(files.length==0) {
boolean rs=file.delete();
if(rs)
System.out.println(file.getAbsolutePath()+"Delete file success!");
else
System.out.println(file.getAbsolutePath()+"Delete file failed!");
}else{
for(int i=0;i<files.length;i++)
deleteFile(files[i]);
deleteFile(file); //对文件夹的内容删完后,再删除文件夹本身
}
}
}