流区分:
未经加工的原始二进制数据叫字节流,经一定编码处理后符合某种格式规定的特定数据是字符流,Java中的字符是Unicode编码,一个字符占用两个字节。什么Input,Output就是字节流,什么Reader,Writer当然就是字符流啦。
什么时候用字节流?什么时候用字符流?
如果是音频文件、图片、歌曲,就用字节流好点,
如果是关系到中文(文本)的,用字符流好点。
如果已到达流的末尾,则返回 -1。
File类:查取文件或其目录的信息,增删文件。
字节流:
- 读:InputStream (抽象类 ) 文件输入流: FileInputStream类 缓冲输入流 :BufferedInputStream
- 写:OutputStream(抽象类) 文件输出流: FileOutputStream类 缓冲输出流:BufferedOutputStream
- 二进制文件:读 DataInputStream 写 DataOutputStream
-
对象文件互换:读 ObjectDataInputStream(反序列化) 写 ObjectOutputStream(序列化)
字符流:
- 读:Reader抽象类 文件输入流: FileReader 缓冲输入流 :BufferedReader
- 写:Writer抽象类 文件输出流 :FileWriter 缓冲输出流:BufferedWriter
字节流、字符流区别:
- 字节流中的最小单位是8个bit字节,适用二进制文件。
- 字符流中的最小单位是16个bit字节,适用文本文件。Reader类能够将输入流中采用其他编码类型的字符转换为Unicode字符,然后在内存中为其分配内存Writer类能够将内存中的Unicode字符转换为其他编码类型的字符,再写到输出流中。
PS:重点是搞懂每个类的位置及其作用,参考:https://blog.csdn.net/weixin_41064826