1. File
代表文件或者目录(文件夹)的类
练习:删除目录
思路分析:写一个单独的方法来删除目录或者文件:判断是一个目录(isDirectory)还是是一个文件(isFile);如果是文件直接删除,如果是目录,获取这个目录下的所有子目录和子文件 --- 后续功能和当前方法要完成的功能是一致的 --- 递归
练习:统计工作空间中 Java 文件和 class 文件的个数
思路分析:定义一个新的方法进行统计:先获取工作空间中所有的子文件和子目录。如果是子目录 --- 递归;如果是子文件,需要判断这个文件是否是一个 Java 文件还是一个class文件
Java API 中的方法前缀:
can 能不能
is 是不是
has 有没有
2. 路径
绝对路径:以盘符或者/开头的路径。指定的位置和文件当前的位置没有什么关系。
相对路径:不以盘符或者/开头的路径(跟后面的资源的定位有关系,比如一直)<!-- 锚 - 超链接 --> href。<!-- 相对路径如果不指定默认在当前的路径下寻找资源 -->
<!-- .. 表示往上蹦(上一级目录) -->。是以当前路径为基准来计算指定的文件的所在路径。
练习:以path.html 作为基准来找test.html
../../../c/f/test.html
3. IO流
(生活中,水流,电流,车流,很常见,总会让某些东西在里面流动和传递起来,计算机中能够流动的也就只有数据了)
用于数据的传输机制。IO -> Input Output Stream -> 输入输出流。数据从外部流向程序 - 输入流;数据从程序流向外部 - 输出流。读取文件 -- 数据是从文件读到程序中 -> 输入流;向一个 TXT 文件中写入字符串 “abc” ->数据是从程序写到文件中 -> 输出流。
根据数据传输方向:输入流和输出流
根据数据传输形式:字符流和字节流
|
输入流
|
输出流
|
字符流
|
Reader
|
Writer
|
字节流
|
InputStream
|
OutputStream
|
四个基本的流都是抽象类。
数据的来源/目的地:存储设备(U盘、硬盘、光盘)、物理设备(话筒,麦克风)、内存(键盘中敲击)、网络(QQ、微信这些读取、接收的数据,其中套接字就是使用的网络)
向一个 TXT 文件中写入字符串 -> 输出流、字符流、和文件相关的流
4. 流的异常处理
1.将流对象放在try之外声明并且赋值为null;放到try之内进行初始化
2.在关流之前需要判断流对象是否为空
3.为了防止关流失败导致流依然占用文件,所以需要将流对象强制置为 null。
4.为了防止关流的时候自动冲刷缓冲区失败导致一部分数据产生丢失,需要在关流之前进行一次手动的冲刷
JDK1.7特性:
二进制 0b
int i = 100_000;
|
<>
try-with-resources