发现IO流这块 自己看了好几次 但是一到要用 还是什么都不知道怎么用 决定简单的整理一下
类 | 说明 |
---|---|
File | 文件类 |
InputStream | 字节输入流 |
OutputStream | 字节输出流 |
Reader | 字符输入流 |
Writer | 字符输出流 |
Closeable | 关闭流接口 |
Flushable | 刷新流接口 |
Serializable | 序列化接口 |
US-ASCII 即英文的ASCII码
UTF-8 变长Unicode字符 ( 1-3 字节 ),
国际通用 UTF-16BE 定长Unicode字符 ( 2 个字节 ),
大端Big-endian表示 UTF-16LE 定长Unicode字符
小端Big-endian表示 UTF-16 文件中开头指定大端还是小端表示方式,
在解码的时候,容易出现乱码,乱码的原因有一下两个 1.字节数不够2.字符集不统一
IO标准步骤
1.创建源
2.选择流
3.操作
4.释放
存储在硬盘上的资源:这些资源Java虚拟机是无权访问的,必须借助操作系统。当使用完之后,必须人为的通知Java虚拟机去释放资源
FileInputStream:通过字节的方式读取文件,适合读取所有类型的文件
FileOutputStream:通过字节的方式写出或追加数据到文件,适合所有类型的文件
FileReader:通过字符的方式读取文件,适合字符文件。
FileWriter: 通过字符的方式写出或追加数据到文件中,适合字符文件。
在电脑上的一块内存,所以这一块资源可以由Java的垃圾回收器来释放资源。所以不用手动释放。释放也没关系,因为这里的close()方法是一个空方法。
数组流:ByteArrayInputStream ByteArrayOutputStream
字节缓冲流: BufferedOutputStream BufferedInputStream
字符缓冲流: BufferedReader BufferedWriter
数据流:DataInputStream DataOutputStream 用来方便我们处理8大基本数据类型和字符串的。说的简单即是它不光保留我们的数据,还保留我们的数据类型。方便我们后期直接获取该数据类型,不用强转了。
转换流: IputStreamReader OutputStreamWriter 字节流转换为字符流,并且指定字符集
其中InputStreamReader为解码,OutputStreamWriter为编码。
对象流: ObjectInputStream ObjectOutputStream 对象流,既可以操作基本数据类型,字符串,还可操作对象。
打印流:PrintStream PrintWriter
操作网络流:openStream