File类源自java.io.File,用于对文件及其路径的各种操作,如:生成、删除、修改、读取等等功能。
File属于IO下,所以它也常常是和IO流的操作类一同使用,通过对文件的操作,实现我们对数据的处理。
构造方法
以文件名路径创建文件对象:
File(String pathname)
演示:
File file=new File("E:\\test\\test01.txt");
以父路径和子路径名字创建文件对象:
File(String parent, String child)
演示:
File file = new File("E:\\test", "1.txt");
System.out.println(file.getPath());
//输出结果:E:\test\1.txt
以父对象和子路径名字创建文件对象:
File(File parentFile, String child)
演示:
File parentFile= new File("E:\\test");
File file = new File(parentFile, "1.txt");
System.out.println(file.getPath());
//输出结果:E:\test\1.txt
常用方法
文件或目录不存在的情况下,通过File对象创建空文件或目录:
public boolean createNewFile()throws IOException
演示:
File f=new File("E:/电脑桌面/jar/files/create.txt");
try{
f.createNewFile();
//不存在文件时,创建一个新的空文件。
}catch (Exception e) {
e.printStackTrace();
}
f.mkdirs(); //创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
删除此抽象路径名表示的文件或目录:
public boolean delete()
创建对象文件的目录:
public boolean mkdir()
public boolean mkdirs()
//二者区别为:mkdir若没有完整的父目录支撑,无法创建;而mkdirs则无需父目录完整,若残缺则将直接创建完整目录。
演示:
File f=new File("E:\\亚洲\\中国\\东北");
//boolean flag=f.mkdir();
//若结构中有一个不存在,就不会创建
boolean flag=f.mkdirs();
//目录结构中有残缺也无妨,都会创建整个目录
重命名文件:
public boolean renameTo(File dest)
获取对象文件名:
public String getName()
获取对象路径:
public String getPath()
判断对象是否为标准文件:
//如果文件的路径不是一个目录,然后满足一些作为文件的其他标准,那么结果返回true
public boolean isFile()
判断文件是否存在:
public boolean exists()
判断文件路径是否为一个目录:
public boolean isDirectory()
判断文件是否可读:
public boolean canRead()
判断文件是否可写:
public boolean canWrite()
获取文件字节大小:
public long length()
//在这里我们会发现,一个汉字输出的字节数会是“3”,这又得谈起编码方式来了,这里引用的一位大神的解释,感兴趣的同学简单看一下:在UTF-8中,一个汉字为什么需要三个字节?
返回文件最后一次被修改时间:
//用当前时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差计算所得,单位是毫秒。若文件不存在,或发生错误,则返回 0L。
public long lastModified()
//这里我们可以对它进行一个优化,返回我们易读的时间格式:
File f = new File("E:\\File01.txt");
if (f.exists()){
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String dateTime=df.format(new Date(f.lastModified()));
System.out.println(dateTime);
}
//输出结果:2021-05-31 21:19:40.052
返回目录下的文件路径名数组:
public File[] listFiles()
演示:
File[] paths = f.listFiles(filter);
for (File path : paths) {
System.out.println(path);
}
传入一个过滤器,返回满足条件的目录下的文件和路径名数组:
public File[] listFiles(FileFilter filter)
演示:
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
retrun pathname.Getname().endwith(".txt");
}
};