JavaEE 初阶第十五期:文件 IO 的 “管道艺术”(上)
专栏:JavaEE初阶起飞计划
个人主页:手握风云
目录
一、文件基础
1.1. 文件概念
1.2. 文件路径
1.3. 文件的类型
二、Java文件操作
2.1. File概述
一、文件基础
1.1. 文件概念
我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据而存在,我们把这部分信息可以视为文件的元信息。
我们要知道,文件在计算机中,是保存在硬盘上的。我们在编程的时候,是不会直接操作硬盘的,而是通过“文件”这样的概念间接进行的。
对于文件的管理,是通过文件资源管理器管理的,通过类似于“树形结构”来组织管理。
1.2. 文件路径
在计算机文件系统中,文件路径是用于标识文件或目录在存储介质中具体位置的字符串,它像 “地址” 一样,告诉操作系统或程序如何找到目标文件。
绝对路径:从文件系统的根目录开始,完整描述文件位置的路径,是 “全量地址”。例如在Windows系统中"D:\data-structure\Test1.12.1\src\Solution.java",就是平时储存数据结构的代码。
相对路径:从当前工作目录(程序运行时的默认目录)出发,描述文件位置的路径,是 “相对地址”。.
:表示当前目录(可省略);..
:表示上一级目录。谈到相对路径,一定要明白相对路径的参考系是啥。
在实际开发中,绝对路径和相对路径都会经常用到,尤其是相对路径,用到会更多一些。
1.3. 文件的类型
所有的文件都可以分为2大类:文本文件和二进制文件。文本文件存的都是字符串,也就是“合法的字符”,例如.txt、.java、.cpp文件。二进制文件存什么都可以。用简单的方式判断为哪种类型的文件,用notepad的方式打开,查看是否乱码。
二、Java文件操作
2.1. File概述
Java中通过java.io.File类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象,并不代表真实存在该⽂件。
- 属性
在 Java 中,File
类的属性主要用于表示系统相关的路径分隔符,具体如下:
修饰符及类型 | 属性 | 说明 |
static String | pathSeparator | 依赖于系统的路径分隔符,String的类型表示 |
static char | pathSeparator | 依赖于系统的路径分隔符,char的类型表示 |
- 构造方法
签名 | 说明 |
File(File parent, String child) | 根据父目录与孩子文件路径,创建一个新的File实例 |
File(String pathname) | 根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径 |
File(String parent, String child) | 根据父目录与孩子文件路径,创建一个新的File实例,父目录用路径表示 |
- 方法
import java.io.File;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {File file = new File("./test.txt");System.out.println(file.getParent());// 返回File对象的⽗⽬录⽂件路径System.out.println(file.getName());// 返回File对象的纯⽂件名称System.out.println(file.getPath());// 返回File对象的文件路径System.out.println(file.getAbsoluteFile());// 返回File对象的绝对路径System.out.println(file.getCanonicalPath());// 返回File对象修饰过的绝对路径,还有一个异常需要处理}
}
import java.io.File;public class Demo2 {public static void main(String[] args) {File file = new File("d:/test.txt");System.out.println(file.exists());// 判断文件是否存在System.out.println(file.isDirectory()); // 判断是否是目录System.out.println(file.isFile()); // 判断是否是文件}
}
import java.io.File;
import java.io.IOException;public class Demo3 {public static void main(String[] args) throws IOException {File file = new File("./test.txt");file.createNewFile(); // 创建文件file.delete(); // 删除文件}
}
import java.io.File;
import java.io.IOException;
import java.util.Scanner;public class Demo3 {public static void main(String[] args) throws IOException {File file = new File("./test.txt");file.createNewFile(); // 创建文件System.out.println("文件创建成功");file.deleteOnExit(); // 程序退出时删除文件System.out.println("使用deleteOneExit");
// file.delete(); // 删除文件Scanner in = new Scanner(System.in);System.out.println("输入任意内容,退出程序");in.next();}
}
上面这个代码的作用:我们在使用Office这些办公软件时,当我们编辑这些文档时,会出现一个隐藏文件,关闭的时候就会消失。特别是当电脑突然关机时,未保存的内容没有写到硬盘上就会消失。Office这样的程序就会通过隐藏文件保存起来。