复习
- File:代表文件或者目录的抽象路径 - File对象对应的文件或者目录不一定真实存在
- 如果利用File删除文件或者目录,这个操作是不可逆操作
- 路径:在计算机中存在相对路径和绝对路径。绝对路径是从根路径(在Windows中根路径是盘符,在Linux中根路径是/)开始计算;相对路径是以当前路径为基准来计算其他的路径
- IO流
- IO流是Java中提供一套用于进行数据传输的机制
- 传输方向:输入流和输出流。传输形式:字节流和字符流
IO流
- 缓冲流:在流中自动提供了缓冲区
- BufferedReader:需要利用一个Reader对象来构建BufferedReader,这个类中提供了readLine方法来对文件进行按行读取
- 练习:统计到目前为止,一共写了多少行Java代码 - 定义函数,传入存储路径,然后需要获取这个路径中所有的子文件和子目录,如果是子目录,继续获取其中的子文件和子目录;如果是子文件,那么获取文件的名字,判断是不是java文件;如果是java文件,那么需要按行读取文件,统计行数
- BufferedWriter:需要利用Writer对象来构建BufferedWriter对象,这个类提供了比普通的Writer对象更大的缓冲区。这个类中提供了newLine方法来进行换行
- 无论是BufferedReader还是BufferedWriter,都是基于装饰者模式/包装模式来构建的
- 装饰者模式:利用同类对象来构建本类对象,在构建过程中,对功能进行增强或者改变
- 文件字节流
- 包含:FileInputStream - 文件字节输入流,FileOutputStream - 文件字节输出流
- 字节流中默认情况下,没有缓冲区
- 转换流
- OutputStreamWriter - 转换输出流。将字节输出流转化为字符输出流,将数据写出
- InputStreamReader - 转换输入流。将字节输入流转化为字符输入流,来读取数据
- 打印流:分为字符流PrintWriter和字节流PrintStream。打印流只有输出流没有输入流 - 打印流中,提供了便捷打印各个对象的方式
- 系统流:系统提供的用于传输数据的流 - 系统流都是字节流
-
系统流
名称
解释
System.in
标准输入流
从控制台获取数据
System.out
标准输出流
将数据打印到控制台
System.err
标准错误流
打印异常信息
- 合并流:将多个字节流的内容合并输出到一个文件中
- 字符串流
- StringReader:从内存中来读取字符串
- StringWriter:构建一个字符串写入内存
其他
一、RandomAccessFile
- RandomAccessFile可以对文件进行读或写 - RandomAccessFile在操作文件的时候,将文件看作是一个大型的字节数组
- RandomAccessFile在使用的时候需要指定模式:r、rw、rws和rwd
二、JDK1.5的特性
- JDK1.5提供了大量的新的功能:自动封箱拆箱、增强for循环、可变参数、泛型、静态导入、枚举、内省、代理等
- 静态导入:JDK1.5所提供的特性之一
- 格式:import static 包名.类名.静态方法名;
- 如果需要使用某一个类中多个静态方法,此时静态导入就需要有多个导包语句
- 静态导入会降低代码的可读性
- 枚举:JDK1.5提供的特性之一
- 适用用于取值固定且可以一一列举的场景,例如季节、星期、月份、等级、单位等
- 在Java中,所有的枚举的公共父类java.lang.Enum
- 在枚举类中,构造函数默认私有并且只能私有
- 枚举类中,可以定义方法和属性,但是枚举类不能被继承的