java流式输入输出流原理
java输入输出流分类 (输入输出相对于程序来说的,而不是文件)
Java.io包中定义了多个流类型(类或者抽象类)来实现输入/输出功能:可以不 按数据流的方向不同分为输入流和输出流 按处理数据单位不同分为字节流和字符流 按功能不同分为节点流和处理流
J2SDK所提供的所有流类型位于包Java,io内都分别继承自以下四中抽象流类型
输入/输出流类4个
InputStream
继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流
InputStream的基本方法
OutputStream
继承自outputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流
OutputStream的基本方法
Reader
继承自Reader的流都是用于向程序输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流
Reader的基本用法
Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流
writer的基本用法
常见节点流/处理流
节点流类型(直接读取写入..不经过处理)
处理流( 经过处理的流)
常见处理流:缓冲流
转换流
InputStreamReader和OutputStreamWriter用于与字节数据到字符数据之间转换。 InputStreamReader需和InputStream“套接”。InputStream转换成Reader OutputStreamWriter需和OutputStream“套接”。OutputStream转换成Writer 转换流在构造时可以指定起编码集合,例如
InputStream isr = new InputStreamReader ( System.in, “ISO08859_1”)
数据流
DataInputStream 和DataOutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。
DataInputStream和DataOutputStream踢狗了可以存取与机器无关的Java原始类型数据(如:int,double等)的方法 DataInputStream和DataOutputStream的构造方法:
DataInputStream( InputStream in)
DataOutputStream( OutputStream out)
Print流
Object流
直接将Object写入或读出
transient关键字 透明的
serializable接口 可序列化
externalizable接口 控制序列化