删除文件夹和复制文件夹 java

本文提供了一个Java程序示例,展示了如何实现文件夹的删除与复制功能。通过递归方法处理文件及文件夹,包括子文件夹及其内容的遍历、删除与复制。文中详细解释了逻辑与位运算符的区别及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


import org.junit.Test;


public class TestDemo {


/**
* 删除一个文件夹
* @param filepath
*/
public void deleteFile(String filepath){

File file = new File(filepath);
if(file.exists()){
if(file.isDirectory()&&file.listFiles().length!=0){
File [] files = file.listFiles();
for(File f :files){
deleteFile(f.getAbsolutePath());
f.delete();
}

}else{
file.delete();
}
file.delete();
}else{
return ;
}
}
/**复制文件夹

* @param path1
* @param path2
*/
public void copyFiles(String path1,String path2){
File file = new File(path1);
if(file.exists()){
/**
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
*/
if(file.isDirectory()&&file.listFiles().length!=0){
File file2 = new File(path2);
if(!file2.exists())
file2.mkdir();
for(File f : file.listFiles()){
if(f.isDirectory()){
copyFiles(f.getAbsolutePath(), path2+"/"+f.getName());
}else{
copyFile(f.getAbsolutePath(), path2+"/"+f.getName());
}
}
}else{
copyFile(path1, path2);
}
}else{
return;
}
}
/**
* 复制单个文件的方法
* @param filepath
* @param filepath2
*/
public void copyFile(String filepath,String filepath2){
try {
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(filepath))));
byte[] data = new byte[in.available()];
in.read(data);
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filepath2))));
out.write(data);


in.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
@Test
public void testFile(){
//deleteFile("D:\\迅雷下载\\风云1945");
//copyFiles("F:\\360Downloads", "D:\\abc");
System.out.println(new File("D://tlxw.sql").listFiles().length);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值