创建一个空的文件夹
package com.tedu.file;
import java.io.File;
/**
* 创建一个文件夹
* @author Wildmess
*
*/
public class CreateDirDemo {
public static void main(String[] args) {
/**
* 创建一个空文件夹
*/
File dir = new File("demo");
if(dir.exists()) {
System.out.println("文件夹已存在!");
} else {
dir.mkdir();
System.out.println("已创建文件夹!");
}
}
}
创建一个多级文件夹
package com.tedu.file;
import java.io.File;
/**
* 创建多级文件夹
* 即一个文件夹中还包含着一个文件夹
*/
public class CreateDirs {
public static void main(String[] args) {
/*
* 在demo文件夹下创建a/b/c/d/e
*/
//指定最后一级目录
File fileDirs = new File("demo/a/b/c/d/e");
if(fileDirs.exists()) {
System.out.println("文件夹已存在!");
} else {
/*
* 如果使用madir创建多级目录会失败,无效
* 只要是多级目录,就必须使用madirs方法
* 会自动创建父级文件夹
*/
fileDirs.mkdirs();
System.out.println("已创建文件夹!");
}
}
}
删除一个空的文件夹
注:delete只能删除一个空的文件夹,含有文件的文件夹的删除需要其他的方法。
package com.tedu.file;
import java.io.File;
/**
* 删除文件夹
* @author Wildmess
*
*/
public class DeleteDirDemo {
public static void main(String[] args) {
File file = new File("demo");
if(file.exists()) {
file.delete();//该方法只能删除空的文件夹
System.out.println("文件夹已删除!");
} else {
System.out.println("文件夹不存在!");
}
}
}
删除一个多级文件夹
要删除一个多级文件夹,必须使用递归。
采用递归的形式,多次调用删除文件。
package com.tedu.file;
import java.io.File;
/**
* 想要真正的使用delete方法删除掉一个文件夹
* 就需要使用递归,让文件夹中每一个子文件夹都被删掉
* 故使用递归编写类似的逻辑比较简单
*
* 注:
* 1.递归使用的次数尽量少
* 递归消耗大,效率差
* 2.递归的调用必须在一个分支结构中
* 否则会无限递归,内存溢出,程序瘫痪
*/
public class DeleteDivDemo2 {
public static void main(String[] args) {
File file = new File("demo");
deleteDir(file);
}
//编写一个方法删除文件夹,参数是File
//考虑是文件夹和文件的不同
public static void deleteDir(File file) {
//
if(file.isDirectory()) {
//如果是文件夹,先取出所有子项
File[] fs = file.listFiles();
//遍历删除数组中的文件
for(int i=0; i<fs.length; i++) {
File f = fs[i];
//调用自己,递归删除
deleteDir(f);
}
}
//如果不是文件夹,
//或在上述操作执行完毕后,就直接删除大文件夹
file.delete();
}
}
文件过滤器
FIle类中还可以根据自己设置的条件,编写以恶搞过滤器,只挑选出符合自己要求的文件。
下面代码演示的是过滤出文件名中带有”.“的文件的方法。
package com.tedu.file;
import java.io.File;
import java.io.FileFilter;
/**
* 文件过滤器
* 就是在listFiles(FileFilter filter)
* 在获取该文件夹的子项时进行过滤
* 只返回符合过滤规则的子项
* @author Wildmess
*
*/
public class ListFilterDemo {
public static void main(String[] args) {
File file = new File(".");
if(file.isDirectory()) {
//如果是一个文件夹
//创建一个匿名内部类:文件过滤器
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File f) {
String fname = f.getName();
System.out.println("过滤:" + fname);
//返回真表示获取
return fname.startsWith(".");
}
};
//安装编写的规律规则规律文件
File[] fs = file.listFiles(filter);
System.out.println(fs.length);
for(int i = 0; i<fs.length; i++) {
System.out.println(fs[i].getName());
}
}
}
}