一、问题
需要删除指定文件夹内包含“视频”名称的文件夹,保留其他文件夹及文件。
二、方法
- 由于删除一个文件夹夹之前必须保证文件夹内没有文件。所以,需要构建两个方法,一个用来删除夹内部的文件,一个用来删除文件夹本身。
- 删除文件夹内部文件需要使用递归。判断文件内部某一个文件是否是目录,如果不是目录,直接删除;如果是目录,对该目录继续调用递归函数,最后再将文件夹删除。
三、代码
public class test28 {
public static void main(String[] args) {
test28 test28 = new test28();
test28.delAllFiles(new File("C:/filename"));
}
public void delAllFiles(File dir) {
if (dir.isDirectory()) {
for (File f : dir.listFiles()) {
if (f.isDirectory() && f.getName().equals("视频")){
System.out.println("deleting directory : " + f.getAbsolutePath());
this.delFilesInVideo(f);
f.delete();
}
else
delAllFiles(f);
}
}
}
public void delFilesInVideo(File dir){
if(dir.isDirectory()){
for(File f : dir.listFiles()){
if(!f.isDirectory()){
System.out.println("deleting file : " + f.getAbsolutePath());
f.delete();
}
else if(f.getName().endsWith(".wmv")){
f.delete();
}
else{
delFilesInVideo(f);
f.delete();
}
}
}
}
}
四、思考
- 删除条件非常灵活,可以根据实际情况进行调整。
- 用Java删除文件的效率非常高,原因还不是很懂,可能跟Java关于文件的底层原理有关。