前言:
整理下IO流的相关知识点笔记,打好基础,daydayup!!!
之前整理了下 字节流,字符流和缓冲流,有需要的可以看这里
java常用应用程序编程接口(API)——IO流概述及字节流的使用
java常用IO流功能——字符流和缓冲流概述
转换流
计算机发展以来有很多编码标准,UTF-8,GBK,ASCII,UTF-16等,目前默认使用UTF-8进行编码和解码。但如果在一些情况下,编码和解码使用的标准不一致,则会出现乱码的情况。如图:
这个时候就需要转换流来把文件进行转码。
InputStreamReader(字符输入转化流)
作用:解决不同编码时,字符流读取文本内容乱码的问题
原理:先获取文件的原始字节流,再将其按真实的字符编码转成字符输入流,这样字符输入流中的字符就可以正常显示了。
使用方法:
public InputStreamReader(InputStream is ,String charset) | 把原始的字节输入流,按照指定字符集编码转成字符输入流 |
示例如下:(运用GBK进行解码)
OutputStreamReader(字符输出转化流)
作用:可以控制写出去的字符使用什么字符集编码
原理:获取字节输出流,再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就可以用该字符集了
使用方法:
public OutputStreamWriter(OutputStream os,String charset) | 可以把原始的字节输出流,按照指定编码转换成字符输出流 |
示例如下:(使用GBK编码)
打印流
打印流是用于输入的工具
PrintStream/PrintWriter(打印流)
作用:打印流可以实现更方便,更高效的打印的数据出去,能实现输入什么就可以打印出什么
使用方法:
public void println(Xxx xx) | 打印任意类型的数据 |
示例如下:
数据流
数据流可以写出或写入不同的类型
DataOutputStream(数据输出流)
作用:把数据和其类型一并写出来
使用方法:
方法 | 说明 |
public final void writeByte(int v) throw IOException | 将byte类型的数据写入基础的字节输出流 |
public final void writeInt(int v) throws IOException | 将int类型的数据写入基础的字节输出流 |
public final void writeDouble(Double v) throw IOException | 将double类型的数据写入基础的字节输出流 |
public final void writeUTF(String str) throw IOException | 将字符串数据以UTF-8编码成字节写入基础的字节输出流 |
public void write (int/byte[ ]/byte[ ]一部分 ) | 支持写字节数据出去 |
示例如下:
DataInputStream(数据输入流)
作用:用于读取数据输出流写出去的数据
使用方法:
方法 | 说明 |
public final byte readByte( ) throws IOException | 读取字节数据返回 |
public final int readInt( ) throws IOException | 读取int类型的数据返回 |
public final double readDouble( ) throws IOException | 读取double类型的数据返回 |
public final String readUTF( ) throws IOException | 读取字符串数据(UTF-8)返回 |
public int readInt() / read(byte[ ] ) | 支持读字节数据进来 |
示例如下:
序列化流
序列化流分为对象序列化和对象反序列化。对象序列化是把java对象写入到文件中去;对象反序列化是把文件里的java对象读出来。
ObjectOutputStream(对象字节输出流)
作用:把java文件序列化,把java对象存入到文件中
使用方法:
public final void writeObject(Object o) throws IOException | 把对象写出去 |
示例如下:(创建User实体类,通过writeObjec方法进行写出保存)
ObjectInputStream(对象字节输入流)
作用:把java对象进行反序列化,把存储在文件中的java对象读入到内存中
使用方法:
public final Object readObject() | 把存储在文件中的java对象读出 |
示例如下:(把保存的java对象取出)
整理结束,撒花!!!