一、关于文件
每个文件除了有数据内容之外,还有一些其他的信息,如文件类型、文件大小等不作为文件数据而存在,这部分信息可以视为文件的 元信息。
文件是树形结构的,按照层级结构进行组织。这样一种用来存放管理信息的特殊文件诞生了,也就是我们所谓的 文件夹(folder)或者目录(directory)的概念。
二、文件路径分类
绝对路径:D:\网易云\下载音乐\VipSongsDownload
相对路径:.\VipSongsDownload 这个 . 就是当前 D:\网易云\下载音乐 的目录,相对于下载音乐来说在哪!我们可以从任一节点出发,进行路径的描述,这种描述方式被称为相对路径。( “ . ”代表当前节点 “ .. ”代表父节点,也就是向上层走一步 )
三、文件类型划分
我们通常根据文件内容来将文件划分为 本文文件和二进制文件 两类
- 本文文件:记事本 打开我们能够看懂的文件的文件
- 二进制文件:记事本 打开是乱七八糟的东西
四、File类 --- Java中的文件操作
1. 构造方法
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录 和 一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象 和 子文件/目录得到File对象
2. 方法
①创建方法
public boolean creatNewFile() :创建一个新文件,若存在,则不重复创建
public boolean mkdir() :创建一个目录,若存在,则不创建,只能创建单层目录
public boolean mkdirs() :创建一个目录,若存在,则不创建,用于创建单层或多层目录
②删除功能
- public boolean delete() :删除由此抽象路径名表示的文件或目录 --- 非空文件夹删除失败返回false,空文件夹才能删除返回 ture
③File类判断和获取功能
public boolean isDirectory(): 测试此抽象路径名表示的File是否为目录
public boolean isFile(): 测试此抽象路径名表示的File是否为文件
public boolean exists(): 测试此抽象路径名表示的File是否存在
public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
public String getPath(): 将此抽象路径名转换为路径名字符串
public String getName(): 返回由此抽象路径名表示的文件或目录的名称
public File[] listFiles(): 返回此抽象路径名表示的目录中的文件和目录的File对象数组
④重命名功能
public boolean renameTo(File file) : 把文件重命名为指定路径---注意:如果路径相同,就是改名
如果路径不同,就是剪切并改名。返回true,重命名成功。
五、例子:
public class Demo3 { public static void main(String[] args) throws IOException, InterruptedException { // 创建一个名为 test的目录 File fileDir = new File("./test"); fileDir.mkdirs(); System.out.println("fileDir.isFile() = " + fileDir.isFile()); System.out.println("fileDir.isDirectory() = " + fileDir.isDirectory()); // 创建一个名为 test的txt类型的文件 File fileTxt = new File("./test/test.txt"); fileTxt.createNewFile(); System.out.println("fileTxt.isFile() = " + fileTxt.isFile()); System.out.println("fileTxt.isDirectory() = " + fileTxt.isDirectory()); System.out.println("fileTxt.getAbsoluteFile() = " + fileTxt.getAbsoluteFile()); Thread.sleep(10000); System.out.println("十秒后尝试删除test文件夹!!"); System.out.println("fileDir.delete() = " + fileDir.delete()); System.out.println("fileDir.isDirectory() = " + fileDir.isDirectory()); Thread.sleep(5000); System.out.println("五秒后重新尝试删除文件夹!!"); System.out.println("fileTxt.delete() = " + fileTxt.delete()); System.out.println("fileDir.delete() = " + fileDir.delete()); } }