注意点
1源路径和目标路径一定不能相同
2在new Fileoutputstream时就会清空目标路径的文件内容
3就算是追加,也会出间题,边读边写问题,程序一时半会不会终出
递归复制实现方法
public class DiGui_01 {
public static void main(String[] args) {
File filename = new File("C:/测试文件");
diGui(filename);
}
public static void diGui(File file){
if (file.isFile()){
//C:\测试文件\新建文件夹
String absolutePath = file.getAbsolutePath();
String s = "D" + absolutePath.substring(1);
//D:\测试文件\新建文件夹
File r1=new File(s);
// 创建一个D盘的File 获取它的父路径
File parentFile = r1.getParentFile();
//创建文件夹
parentFile.mkdirs();
//复制
try( FileInputStream in = new FileInputStream(absolutePath);
BufferedInputStream b=new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream(s);
BufferedOutputStream bo=new BufferedOutputStream(out);
) {
byte[] a=new byte[1024];
int read = 0;
while ((read = b.read(a))!=-1){
bo.write(a,0,read);
}
} catch (Exception e) {
e.printStackTrace();
}
//复制结束
// 递归实现
}else{
File[] files = file.listFiles();
for (File eve:files) {
diGui(eve);
}
}
}
递归删除
public class DIGui_02 {
public static void main(String[] args) {
File filename = new File("C:/测试文件");
diGui(filename);
}
public static void diGui(File file){
File[] dele = file.listFiles();
if (dele != null&&dele.length > 0) {
for (File f : dele) {
diGui(f);
}
}else {
System.out.println(file.getAbsolutePath()+"删除"+file.delete());
}
}
}