怎么写 java 递归?解决删除文件夹以及子文件
我最近做的java文档管理里面遇到的一个问题,怎么样?当文件夹里含有文件,删除文件夹,同时把里面的文件一起删除。怎么用递归写?????...
我最近做的java文档管理里面遇到的一个问题,怎么样?当文件夹里含有文件,删除文件夹,同时把里面的文件一起删除。怎么用递归写?????
展开
推荐于2018-04-04
展开全部
import java.io.File;
public class class_99 { /**
* @param args
*/
static boolean eqs(String path)
{
boolean flag = false;
File file = new File(path);
if(!file.exists())
{
return false;
}
if(!file.isDirectory())
{
return false;
}
String[] str = file.list();
System.out.println("============"+file.list().length);
for(int i=0;i<str.length;i++)
{
File fi = new File(path+"/"+str[i]);
if(path.endsWith(file.separator))
{
fi = new File(path+str[i]);
}
else
{
fi = new File(path+fi.separator+str[i]);
}
if(fi.exists()&&fi.list().length==0)//如果是文件夹且没有东西了 就删除 前提是没有文件的存在 如果有的话
//需要另做处理 这里只是教你怎么删除空文件夹
{
java.io.File myFilePath = new java.io.File(path+"/"+str[i]); myFilePath.delete();
}
if(fi.isDirectory())//如果文件假内还有 就继续调用本方法
{
eqs(path+"/"+str[i]);
}
}
return true;
}
public static void main(String[] args) {
String str ="";//定义一个str接受字符串 eqs("D:\\text");
}
}
public class class_99 { /**
* @param args
*/
static boolean eqs(String path)
{
boolean flag = false;
File file = new File(path);
if(!file.exists())
{
return false;
}
if(!file.isDirectory())
{
return false;
}
String[] str = file.list();
System.out.println("============"+file.list().length);
for(int i=0;i<str.length;i++)
{
File fi = new File(path+"/"+str[i]);
if(path.endsWith(file.separator))
{
fi = new File(path+str[i]);
}
else
{
fi = new File(path+fi.separator+str[i]);
}
if(fi.exists()&&fi.list().length==0)//如果是文件夹且没有东西了 就删除 前提是没有文件的存在 如果有的话
//需要另做处理 这里只是教你怎么删除空文件夹
{
java.io.File myFilePath = new java.io.File(path+"/"+str[i]); myFilePath.delete();
}
if(fi.isDirectory())//如果文件假内还有 就继续调用本方法
{
eqs(path+"/"+str[i]);
}
}
return true;
}
public static void main(String[] args) {
String str ="";//定义一个str接受字符串 eqs("D:\\text");
}
}
展开全部
上面的代码好多余
/**
* 递归删除该文件或者该文件夹
*
* @param parentPath
* @return
*/
public static boolean recursionDelete(String parentPath) {
return recursionDelete(new File(parentPath));
}
/**
* 递归删除该文件或者该文件夹
*
* @param parentFile
* @return
*/
public static boolean recursionDelete(File parentFile) {
if (parentFile.isDirectory()) {
for (File file : parentFile.listFiles()) {
recursionDelete(file);
}
}
return parentFile.delete();
}
/**
* 递归删除该文件或者该文件夹
*
* @param parentPath
* @return
*/
public static boolean recursionDelete(String parentPath) {
return recursionDelete(new File(parentPath));
}
/**
* 递归删除该文件或者该文件夹
*
* @param parentFile
* @return
*/
public static boolean recursionDelete(File parentFile) {
if (parentFile.isDirectory()) {
for (File file : parentFile.listFiles()) {
recursionDelete(file);
}
}
return parentFile.delete();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public boolean deleteDirectory(String sPath) {
//如果sPath不以文件分隔符结尾,自动添加文件分隔符
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
//删除子文件
if (files[i].isFile()) {
flag = deleteFile(files[i].getAbsolutePath());
if (!flag) break;
} //删除子目录
else {
flag = deleteDirectory(files[i].getAbsolutePath());
if (!flag) break;
}
}
if (!flag) return false;
//删除当前目录
if (dirFile.delete()) {
return true;
} else {
return false;
}
}
//如果sPath不以文件分隔符结尾,自动添加文件分隔符
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
//删除子文件
if (files[i].isFile()) {
flag = deleteFile(files[i].getAbsolutePath());
if (!flag) break;
} //删除子目录
else {
flag = deleteDirectory(files[i].getAbsolutePath());
if (!flag) break;
}
}
if (!flag) return false;
//删除当前目录
if (dirFile.delete()) {
return true;
} else {
return false;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个还是自己写吧,很基本的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询