Java流式输入输出原理
输入流(InputStream):程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道。输入流不关心数据源来自何种设备(键盘,文件,网络)。
输出流:(OutputStream):程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。输出流不关心数据的目的是何种设备(键盘,文件,网络)。
Java流类的分类
Java.io包中定义了多个流类型来实现输入/输出功能。按数据流的方向可以分为输出流和输入流。按处理数据=单位不同可以分为字节流和字符流。按照功能不同可以分为节点流和处理流。Java.io包内都分别继承自一下四种抽象流类型。
节点流和处理流
节点流:是可以从一个特定的数据源(节点)读写数据。
处理流:是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更强大的读写功能。
输入/输出流类
InputStream:继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图中深色为节点流,浅色为处理流。
InputStream的基本方法:
OutputStream:继承自OutputStream的流都是用于向程序中输出数据,且数据的单位为字节(8bit),下图中深色为节点流,浅色为处理流。
OutputStream的基本方法(调用出close方法之前,先调用flush方法,flush方法的意思是先把缓存区里的数据写出去然后在进行关闭)
Reader:继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit),下图中深色为节点流,浅色为处理流。
Reader的基本方法
Writer:继承自Writer的流都是用于向程序中输出数据,且数据的单位为字符(16bit),下图中深色为节点流,浅色为处理流。
Writer的基本方法(调用出close方法之前,先调用flush方法,flush方法的意思是先把缓存区里的数据写出去然后在进行关闭)
节点流类型(结尾Stream的是字节流,结尾是Reader/Writer的是字符流)
FileInprtStream例子
控制台输出结果
FileOutputStream例子
控制台输出结果
查找写入文件地址
FileReader例子
控制台输出结果
FileWriter例子
控制台输出结果
查找写入文件的地址
处理流类型
缓冲流
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率。缓冲流分为四种:BufferedReader,BufferedWriter,BufferedInputStream,BufferedOutputStream.其常用方法:
注意事项
BufferedInputStream例子
控制台输出结果
BufferedReader/BufferedWriter例子
控制台输出结果
查找写入文件的地址
转换流
OutputStreamWriter例子
控制台输出结果
查找写入文件的地址(有追加)
查找写入文件的地址(没有追加)
InputStreamReader例子
控制台输出结果
数据流
DataOutputStream,DataInputStream例子
控制台输出结果
Print流(输出/打印流,Print没有输入流)
PrintWriter例子
控制台输出结果
查找写入文件的地址
Object流
Object流例子
控制台输出结果(有transient修饰的)
控制台输出结果(没有transient修饰的)
serializable接口和externallzable接口的区别
serializable接口:用来标记类的对象可以被实例化(不可控制)
externallzable接口:可控实例化(不常用)
网友评论