概述
在以往的程序设计中,所有的数据在程序运行时都放在内存(RAM)中,而RAM中的数据会随着程序结束或者由于意外断电而消失。现实生活中所有数据最终会保存到硬盘或者闪存盘(ROM)中,然而,计算机只识别二进制数0和1,所以存在硬盘里面的数据也是0和1的形式,实际展示在我们面前的则不是二进制数,而是一个个文件,为了方便检索和分类,文件通常会放在文件夹中。
File类是java.io包下的类,是文件/文件夹的路径名的抽象表示,可以描述文件和文件夹事物,通过File工具类我们可以对文件进行创建、查找和删除等。虽然File类可以对文件(夹)进行上述操作,但其无法编辑文件的内容,要想编辑文件内容则需要IO流技术完成。
构造函数
public File(String pathname):按照文件(夹)的路径名创建一个抽象路径(File对象)
Notice:为什么叫抽象路径而不是一个文件呢?这是因为创建前File是不会判断路径表示文件(夹)在ROM中是否存在
public File(String parent, String child):从父路径名和子路径名创建一个抽象路径
Tips:父路径通常是一个文件(夹)的上级路径,子路径通常是表示的当前文件(夹)本身的名字
public File(File parent, String child):从父抽象路径和子路径名创建一个新的抽象路径,但这个父抽象路径表示的文件(夹)不一定存在
核心函数
public String getAbsolutePath():获取当前File对象的完整路径(绝对路径)
Tips:
相对路径:相对于当前项目的路径,不带盘符
绝对路径:文件(夹)完整路径,带盘符
推荐多用相对路径,理由是当整个项目的路径被改变时依旧方便检索文件
public String getPath():获取当前File对象中封装的内容(取决于构造函数中写的是什么路径)
public String getName():获取当前File对象中封装的文件名或路径中最后一层文件夹名
public long length():返回文件大小
public boolean exists():判断当前File对象封装的文件(夹)在ROM中是否存在
public boolean isFile():判断当前File对象封装的是不是一个文件
public boolean isDirectory():判断当前File对象封装的是不是一个文件夹
public boolean createFile():当File对象表示的文件不存在且上级路径存在时,将File对象以空文件形式存到ROM中
Notice:
1. 当文件及其上级路径均存在时,不会创建空文件并返回false
2. 当上级路径不存在时会抛出java.io.IOException:系统找不到指定路径的异常,此情况不会创建文件
public boolean delete():删除由当前File表示的文件(夹)
Notice:
调用者表示的是一个文件夹时,要调用delete()必须确保文件夹是空的才能删除
public boolean mkdir():在ROM上创建File对象表示的文件夹
public boolean mkdirs():在ROM上创建File对象表示的文件夹,包括尚未存在的父文件夹
Notice:
mkdir()只可以创建一级文件夹,成功创建的前提是当前层级文件夹的上级路径都存在但当前层级文件夹本身不在ROM中。
mkdirs()可以创建多级文件夹,当ROM中缺少当前对象表示的文件(夹)父目录时会在ROM中补全。
public String[] list():返回字符串数组,数组存的是当前File目录下包含的所有文件(夹)
public File[] listFiles():返回File数组,与list()函数差不多,但一个是字符串表示形式,一个是抽象路径表示形式
总结
1. File类表示的是文件(夹)的抽象路径,利用File类里面的成员函数我们可以操纵ROM上的文件(夹),但要想编辑文件内容则需要配合输入/输出流(IO)才能完成
2. File类定义的成员函数中,返回值类型为boolean的操作只有返回true时才能证明操作执行成功
3. 区分相对路径与绝对路径的简便方法是看路径有无盘符(根目录)
4. mkdir()和mkdirs()的区别在于前者可以创建一层文件夹,且文件夹的上级目录应存在,后者可以在文件夹上级目录不存在时统统补全,在创建当前对象表示的文件夹