java基础要点:[5]io
输入和输出流
输入流:用于读取数据的流
输出流:用于写出数据的流
流的方向是际于程序定的
字符流:以字符为单位读写数据
字节流:以字节为单位读写数据
低级流:节点流
高级流:处理流,过滤流
低级流:数据有明确的来源和去向
高级流:高级流不能独立存在,需要处理另一个流。
文本输入输出流
FileInputStream:文本输入流
FileOutputStream:文本输出流
BufferedInputStream
BufferedOutputStream
高级流:
内部维护着一个缓冲区,可以进行高效的读写操作
高级流不能独立存在,看构造方法来确认是否是高级流,高级流的构造方法传入参数是其他流
高级流的作用是对其他处理流中的数据进行加工方便我们读写操作的!
DataInputStream
DataOutputStream
DIS&DOS
可以方便的对基本类型数据进行读写。
字符流:
在字节流上的基础上一字符为单位进行读写操作,所以字符流都是高级流
字符输入流:以Reader结尾
字符输出流:以Writer结尾
字符输入流
InputStreamReader
字符输出流
OutputStreamWriter
字符流可以使用自己的构造方法,在创建流的时候指定编码集如:
InputStreamReader(InputStream in, Charset cs)
创建使用给定字符集的 InputStreamReader。
OutputStreamWriter(OutputStream out, Charset cs)
创建使用给定字符集的 OutputStreamWriter
缓冲字符输出输入流
BufferedReader
BufferedWriter
以行为单位读取
FileReader与FileWriter
文件字符输入输出流,用于读写文本文件的流,不支持设定的字符集,只能是系统默认的!
PrintWriter缓冲字符输出流
构造方法:
PrintWriter(File file):
创建向定文件写字符的字符输出流
PrintWriter(OutputStream out):
创建基于字节输出流的缓冲字符输出流
PrintWriter(Writer writer):
将字符输出流转换为缓冲字符输出流
PrintWriter(String fileName):
创建给定路径的文件的字符输出流
装饰模式
动态的给一个对象添加额外的职责
在不改变原来的对象的基础上添加一些逻辑操作的对象。
spring AOP发展来的
将对象序列化与反序列化操作的流
OIS 与OOS
ObjectInputStream
ObjectOutputStream
若对象想被序列化,需要实现序列化接口
Serializable接口,表示子类可以序列化
作用:
1、该对象保存的数据一直使用,我们可以将其进行序列化后写入到硬盘中长期保存,这样
下次启动程序时读取出重新使用
2:将对象进行网络传输。
JDK中大部分实现了序列化接口,例如ArrayList都实现了,也就是他们可以实现序列化
反序列化后的对象和原对象equals比较为true,但不是同一对象,如果其中的属性也是引用类型,
那么这些属性也不是同一对象,但equals比较为true。
深度复制对象是将对象序列化后在反序列化
这就需要:
ObjectInputStream
ObjectOutputStream
但着两个流需要将数据读入写出,但不希望在复制过程中将对象写道磁盘上再读回来,这样慢
我们既要使用ois和oos又要在内存上进行完成序列化和反序列化操作
ByteArrayInputStream
ByteArrayOutputStream
这两个流也有明确的来源于去向
他们内部维护着一个字节数组
通过ByteArrayInputStream写出字节,就是写到其内部的维护的字节数组上
通过ByteArrayOutputStream读出字节,就是将其内部维护的数组里面的字节读出。
(共篇)上一篇:字符串|下一篇: