兄弟们帮我看看,为什么只能删除第一个文件夹,我先谢谢了!!!!!!
删除文件夹及其里面的所有子文件夹与文件的类
package cn.web.bean;
import java.io.File;
import
java.io.IOException;
public class DelFile {
public void del(String filepath) throws
IOException{
File f = new File(filepath);//定义文件路径
if(f.exists() && f.isDirectory()){//判断是文件还是目录
if(f.listFiles().length==0){//若目录下没有文件则直接删除
f.delete();
}else{//若有则把文件放进数组,并判断是否有下级目录
File delFile[]=f.listFiles();
int i =f.listFiles().length;
for(int j=0;j<i;j++){
if(delFile[j].isDirectory()){
del(delFile[j].getAbsolutePath());//递归调用del方法并取得子目录路径
}
delFile[j].delete();//删除文件
}
}
del(filepath);//递归调用
}
}
}
在Servlet中调用该类
String webRootPath = request.getSession().getServletContext().getRealPath("/");
String delPath=delPath=webRootPath+"web/mall/files/";
String select_SQL="SELECT ProductId FROM Products WHERE CategoryId='"+categoryId+"'";
DelFile delFile=new DelFile();
DataBase db=new DataBase();
ResultSet rs=null;
rs=db.executeQuery(select_SQL);
while(rs.next())
{
delPath+=rs.getString("ProductId").trim();
delFile.del(delPath);
}
如果从数据库中循环出20条记录,只能删除第一个文件夹,为什么呢?
其后的19个文件夹删除不了,也没有报出什么异常,百不香其解。望兄弟
指教,谢谢
------解决方案--------------------这段代码在我这里可以删除整个目录,包括子目录和文件。 你的代码没发现问题!
如果删除不成功,原因可能是那个文件被使用中或者你的servlet运行用户没有权限
Java code
import java.io.File;
import java.io.IOException;
public class PassS {
public static void main(String[] args) throws IOException {
PassS p = new PassS();
p.del("d:\\temp\\1");
}
public void del(String filepath) throws IOException {
File f = new File(filepath);// 定义文件路径
if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
f.delete();
} else {// 若有则把文件放进数组,并判断是否有下级目录
File delFile[] = f.listFiles();
int i = f.listFiles().length;
for (int j = 0; j < i; j++) {
if (delFile[j].isDirectory()) {
del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
}
delFile[j].delete();// 删除文件
}
}
del(filepath);// 递归调用
}
}
}
------解决方案--------------------
delPath+=rs.getString("ProductId").trim();
这句话可能有问题
while(rs.next())
{
delFile.del(delPath+rs.getString("ProductId").trim());
}