学习内容:File类

1、File类的概述

1.1、File类和“四大家族”没有关系,File只是一个路径名的抽象表示形式,所以File类不能完成文件的读和写。
1.2、File对象是文件和文件夹(目录)路径名的抽象表示形式。一个File对象又肯对应的是目录,也可能是文件夹(目录)。

2、File类的方法

2.1、构造方法
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent,String child) 根据指定的父路径和文件路径创建一个新File对象实例
File(File parent,String child) 根据指定的父路径对象和文件路径创建一个新的File对象实例

2.2、常用方法
boolean exists() 判断是否存在

boolean createNewFile() 指定路径不存在该文件时创建文件,返回true 否则false
boolean mkdir() 当指定的单击文件夹(目录)不存在时创建文件夹(目录)并返回true 否则false
boolean mkdirs() 但指定的多级文件夹(目录)在某一级文件夹不存在时,创建多级文件夹(目录)并返回true 否则false
boolean delete() 删除文件或者删除单级文件夹。删除文件夹,这个文件夹下面不能有其他的文件和文件夹
代码实例:

import java.io.File;

public class Test01 {
    public static void main(String[] args) throws Exception {
        //创建一个File对象
        File f1=new File("D:\\file");

        //判断是否存在
        System.out.println(f1.exists());

        //如果D:\file不存在,则以文件的形式创建出来
        if(!f1.exists()){
            //和之前一样,这里因为麻烦,异常就直接上抛了
            f1.createNewFile();
        }

        //如果D:\file不存在,则以文件的形式创建出来
        if(!f1.exists()){
            //以目录的形式新建
            f1.mkdir();
        }

        //创建多重目录
        File f2=new File("D:\\a\\b\\c\\d");
        if (!f2.exists()) {
           //多重目录形式新建
            f2.mkdirs();
        }
        
		//删除文件
        System.out.println(f1.delete());
    }
}

String getParent() 获取当前路径的父级路径,以字符串形式返回该父级路径
String getAbsolutePath() 获取文件的绝对路径,返回路径的字符串
File getAbsoluteFile() 获取文件的绝对路径,返回File对象

File f3=new File("D:\\奥特曼合集\\迪迦奥特曼\\Test.txt");
//获取文件的父路径
String parentPath=f3.getParent();
System.out.println(parentPath);//D:\奥特曼合集\迪迦奥特曼

File parentFile=f3.getParentFile();
System.out.println("获取绝对路径:"+parentFile.getAbsoluteFile());//获取绝对路径:D:\奥特曼合集\迪迦奥特曼

//获取绝对路径
File f4=new File("copy");
System.out.println(f4.getAbsoluteFile());//D:\IDEA\Project\Serein\copy

File f5=new File("myfile");
System.out.println(f5.getAbsolutePath());//D:\IDEA\Project\Serein\myfile

String getName() 获取文件或文件夹的名称
boolean isDirectory() 判断是否是一个目录
boolean isFile() 判断是否是一个文件
long lastModified() 以毫秒值返回最后修改时间
long length() 获取文件大小(字节数)
boolean renameTo(File dest) 重命名

File f1=new File("D:\\奥特曼合集\\迪迦奥特曼\\迪迦奥特曼第一集.txt");
//String getName() 获取文件或目录的名称
System.out.println("文件名:"+f1.getName());//文件名:迪迦奥特曼第一集.txt

//boolean isDirectory() 判断是否是一个目录
System.out.println(f1.isDirectory());//false

//boolean isFile() 判断是否是一个文件
System.out.println(f1.isFile());//true

long haoMiao=f1.lastModified();//这个毫秒是从1970年到现在的总毫秒数
//将总毫秒数转换成日期
Date time=new Date(haoMiao);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String strTime=sdf.format(time);
System.out.println(strTime);//2021-12-01 09:43:54 278

//获取文件大小
System.out.println(f1.length());//842字节

//重命名
File file = new File("a.txt");
File file1 = new File("e.txt");
System.out.println(file.renameTo(file1));

File[] listFile 以File对象的形式返回当前路径下的所有文件和文件夹名称

//获取当前目录下所以的子文件
        File f=new File("D:\\JDK");
        File[] files=f.listFiles();
        //foreach
        for (File file:files){
            System.out.println(file.getAbsolutePath());//获取绝对路径
            System.out.println(file.getName());//获取文件名
        }