现将File类中对于文件的操作进行整理。
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class FileSummarize {
public static void main(String[] args) throws IOException {
//创建File对象:系统中文件或文件夹的抽象表示。 File (String pathname)
File file = new File("D:\\Desktop\\Desktop\\Test\\a.txt");
/* 创建功能 */
//只负责创建文件,已存在则false,目标路径如果不存在会报错
System.out.println(file.createNewFile());
//只负责创建目录,但可以创建多级目录,如果多级目录不存在,则帮你全部创建
//public boolean mkdirs ()
/* 重命名功能*/
//重新命名此抽象路径名表示的文件
File file3 = new File("D:\\Desktop\\Desktop\\Test\\a.txt");
file3.renameTo(new File("D:\\Desktop\\Desktop\\Test\\b.txt"));
/* 删除功能*/
// 删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除(否则false)
// delete不会因为文件不存在,路径名不正确而抛出异常,只会返回false, 并且不会进入回收站
System.out.println(file3.delete());
/* 判断功能*/
File file4 = new File("D:\\Desktop\\Desktop\\Test\\noun.txt");
// 判断File对象是否表示的是一个文件
System.out.println(file4.isFile());
//判断File对象是否表示的是一个目录
System.out.println(file4.isDirectory());
//判断File表示的文件是否物理存在
System.out.println(file.exists());
/* 获取功能 */
//获取File对象表示的抽象文件的绝对路径
System.out.println(file4.getAbsolutePath());
//获取File对象表示的抽象文件,路径名字符串
System.out.println(file4.getPath());
//获取文件或者目录的名字
System.out.println(file4.getName());
//返回由此抽象路径名表示的文件的长度。不能返回文件夹的长度
//此抽象路径名表示的文件的长度,以字节为单位;如果文件不存在,则返回 0L
System.out.println(file4.length());
//返回此抽象路径名表示的文件最后一次被修改的时间戳。
System.out.println(file4.lastModified());
/* 高级获取功能 */
/* 返回一个此抽象的路径名表示的目录下的文件和文件夹的名字的字符串数组
只能获取当前目录的下一层,并不是获取所有层级
如果File对象表示的是一个文件,则返回null
如果是一个空目录,返回一个长度为0的数组,而不是null [] */
//public String[] list()
File file5 = new File("D:\\Desktop\\Desktop\\Test");
System.out.println(Arrays.toString(file5.list()));
/* 返回此抽象路径名下的文件和文件夹的绝对路径形式的File对象数组
只能获取当前目录的下一层,并不是获取所有层级
如果File对象表示的是一个文件,则返回null
如果是一个空目录,返回一个长度为0的数组,而不是null */
//public File[] listFiles()
System.out.println(Arrays.toString(file5.listFiles()));
}
}
文件过滤器
自定义获取功能是在高级获取功能的基础上,加了一个过滤器,所以高级功能的特点它都有
FileFilter是一个接口,它只有下面一个方法
//测试指定抽象路径名是否应该包含在某个路径名列表中
boolean accept(File pathname)
这个方法相当于把高级功能中listFiles()获取的File数组中File对象遍历一遍,然后逐个判断
符合条件的留下,不符合条件的干掉(丢弃)
常用匿名内部类来做实现
举例:
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
/*
输出某个目录(单级)下的所有java文件,使用过滤器.
*/
public class Demo {
public static void main(String[] args) {
//创建File对象 ---> 目录
File dir = new File("D:\\Test");
// 使用带过滤器的listFiles方法
// 匿名子类对象
//File[] files = dir.listFiles(new MyFilter());
// 匿名内部类
//File[] files = dir.listFiles(new FileFilter() {
// @Override
// public boolean accept(File pathname) {
// return pathname.getName().endsWith(".jpg");
// }
//
//});
// lambda方式
File[] files = dir.listFiles(pathName -> pathName.getName().endsWith(".jpg"));
System.out.println(Arrays.toString(files));
}
}
class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java");
}
}