java文件递归删除文件夹
A. java怎么实现扫描多个目录中(包括子目录)的指定文件,并且删除它们
思路如下使用递归
public static void de(File f)
{ File [] b = f.listFiles();
//获取包含file对象对应的子目录或者文件
for(int i =0;i<b.length;i++}{
if(b[i].isFile()){
b[i].delete(); //判断是否为文件如果是 就删除 }
else{ de(b[i]);//否则重新递归到方法中 }
} f.delete();//最后删除该目录中所有文件后就删除该目录 }
B. java 中的file中怎么删除全部文件夹
可参考如下代码,代码说明写代码后注释上
示例代码如下:
importjava.io.File;
publicclassTest
{
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
delFolder("c:/bb");
System.out.println("deleted");
}
//删除文件夹
//paramfolderPath文件夹完整绝对路径
publicstaticvoiddelFolder(StringfolderPath){
try{
delAllFile(folderPath);//删除完里面所有内容
StringfilePath=folderPath;
filePath=filePath.toString();
java.io.FilemyFilePath=newjava.io.File(filePath);
myFilePath.delete();//删除空文件夹
}catch(Exceptione){
e.printStackTrace();
}
}
//删除指定文件夹下所有文件
//parampath文件夹完整绝对路径
publicstaticbooleandelAllFile(Stringpath){
booleanflag=false;
Filefile=newFile(path);
if(!file.exists()){
returnflag;
}
if(!file.isDirectory()){
returnflag;
}
String[]tempList=file.list();
Filetemp=null;
for(inti=0;i<tempList.length;i++){
if(path.endsWith(File.separator)){
temp=newFile(path+tempList[i]);
}else{
temp=newFile(path+File.separator+tempList[i]);
}
if(temp.isFile()){
temp.delete();
}
if(temp.isDirectory()){
delAllFile(path+"/"+tempList[i]);//先删除文件夹里面的文件
delFolder(path+"/"+tempList[i]);//再删除空文件夹
flag=true;
}
}
returnflag;
}
}
C. JAVA遍历一个文件夹中的所有文件---(递归)
public void traverseFolder2(String path) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
(3)java文件递归删除文件夹扩展阅读
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
}
D. java编程: 给定路径,递归删除不包含文件的文件夹
importjava.io.File;
publicclass${
publicstaticvoidmain(String[]args){
Stringpath="D:/test";
Filef=newFile(path);
remove(f);
}
privatestaticvoidremove(Filef){
if(!f.isDirectory()){
return;
}
File[]fs=f.listFiles();
if(fs.length==0){
f.delete();
return;
}
for(Filefile:fs){
remove(file);
}
if(f.listFiles().length==0){
f.delete();
}
}
}
E. java我删除一个文件的时候如果文件删除成功了,还需要判断该文件所在的文件夹是否为空如果为空的话也要删
// 正向递归删除路径下的文件
public void delFile(String path){
File file = new File(path);
if(file.exists()&&file.isFile()){
file.delete();
}else if(file.exists()&&file.isDirectory()){
File[] files = file.listFiles();
if(files!=null){
for(File f:files){
if(f!=null){
delFile(f.getAbsolutePath());
}
}
}
}
}
// 逆向递归删除空目录
public void delEmptyPath(String path){
File file = new File(path);
if(file.exists()&&file.isDirectory()){
File[] files = file.listFiles();
if(files!=null&&files.length>0)
return;
if(file.delete()){
delEmptyPath(file.getParent());
}
}
}
// 把上面两个方法先后调用就能达到你的目的
public void delDirectories(String path){
File file = new File(path);
delFile(file.getAbsolutePath());
delEmptyPath(file.getParent());
}
F. 用java复制多级文件夹下的文件,只要文件不要文件夹。
在Java中,我们需要递归地遍历多级文件夹下的文件。首先,创建一个File对象指向目标文件夹,例如"d:/A/”。然后定义一个方法ergodic,接收File对象和一个列表作为参数。此方法首先检查当前目录下的文件数组是否为空,如果为空则直接返回结果列表。
接着,遍历当前目录下的所有文件或子目录。如果遇到的是目录,则调用自身方法ergodic继续递归查找子目录。若遇到的是文件,则将文件的路径添加到结果列表中。最后返回结果列表。
通过这种方法,你可以获取到所有文件的路径,这些路径存储在List中。如果你想直接将这些文件复制到另一个目录,只需稍作修改。具体而言,将判断条件改为文件时,使用流将文件内容写入新目录即可。
例如,你可以使用FileInputStream读取文件内容,并使用FileOutputStream将内容写入新目录中的同名文件。这样,你就能将指定文件夹下的所有文件复制到另一个目录,而无需复制文件夹本身。
这种方法适用于处理复杂的文件结构,只需递归遍历并处理每个文件即可。当然,你需要确保目标目录存在,并有足够的写入权限,否则可能会遇到异常。