File类
1.相关方法
-
新建对象,而不是文件(file为地址);
-
自定义地址创建
File file = new File("/demo");
-
在指定目录下创建[只在大量创建子目录时使用]
File file = new File(mkdir,"demo");
-
-
显示File信息
-
地址
file;//方法1 String path = file.getPath();//方法2
-
文件/目录名
String name = file.getName();
-
绝对地址=绝对名字
File AbsoluteFile = file.getAbsoluteFile();//方法1 String absolutePath = file.getAbsolutePath();//方法2:absolluteFile().tostring();
-
-
检测
-
是否是目录或文件
boolean exists = file.exists();
-
是否是目录
boolean directory = file.isDirectory();
-
是否是目录
boolean file = file.isFile();
-
-
创建/删除
-
创建目录(A必须存在)
File mkdir= new File("D:\\A\\C"); mkdir.mkdir();
-
创建多级目录
File mkdirs= new File("D:\\A\\C"); mkdirs.mkdirs();
-
创建文件(需要处理IOException)
文件可能被占用
file.createNewMkdir();
-
删除文件目录
不能删除非空目录,见案例详述
file/mkdir.delete();
-
-
其他
-
文件目录大小
long length = file/mkdie.length();
-
返回目录下的所有文件和目录地址
File[] list = mkdir.listFile();
-
返回目录下的所有文件和目录名
String[] list = mkdir.listFile();
-
-
临时目录
前缀最少3位数,并且是生成以前缀为开头的随机文件名
-
新建临时文件夹
File.createTempFile("前缀","后缀");
-
在指定目录下创建临时文件夹
File.createTempFile("前缀","后缀","指定目录");
-
-
案例(删除非空目录)
-
方法1
public static void delete1(File file) { if (file.exists()) { if (file.isFile()) { file.delete(); } else { File[] list = file.listFiles(); for (File file2 : list) { file2.delete(); } file.delete(); syso("删除完毕"); } }else { System.out.println("要删除的文件或目录不存在"); } }
-
方法2(return)迭代方法
public static void delete2(File file) { if(!file.exists()) { return; }else if(file.isFile()) { file.delete(); return; }else { File[] files = file.listFiles(); for(File file2 :files) { delete2(file2); } file.delete(); } System.out.println("删除完毕"); }
-
2.FileNameFilter
函数式接口
-
实现方法:
- 新建类实现FileNamefilte,重写accept(File dir,String name)方法 dir:父目录,name:字文件目录名称
- 1中类返回满足的要求
-
案例
public boolean accept(File dir, String name) { boolean endsWith = name.endsWith(".f"); //name只有new File才能使用File的方法 //boolean directory = new File(name).isDirectory(); return endsWith; }
-
FileNameFilter与FileFilter的区别
- 传入参数不同,FileFilter也实现accept但是传入(File file)方法
- FileFilter不适用于
file.list()
方法