InputStream与OutputStream 类:
流按照功能分为:输入流(input)----用来读取数据;输出流(output)----用来写出数据
流分类为:节点流和处理流
节点流:节点流又称为低级流,是真实负责读写的流,是连接程序与数据源的"管道",负责将数据搬运。读写一定是基于低级流完成的。
特点:数据源明确(知道数据从哪里来,或者数据写到哪里去)
处理流:处理流不能独立存在,必须基于另一个流进行读或写,目的是通过处理流提供的读写功能简化我们对实际读写数据的操作。
文件流:用来读写文件数据的流,文件流是一对低级流论功能与RandomAccessFile一致,都是用来读写文件数据的流,但是区别在于实际底层的读写实现方式不同,RAF是基于指针进行读写的。文件流是基于流式读写的。


输入输出流复制文件:

缓冲流: BufferedInputStream----缓冲输入流,提高读取效率 BufferedOutputStream----缓冲输出流,提高写出效率

缓冲输出流写出数据的缓冲区问题:

对象流:对象流是一对高级流,作用是方便读写java中的对象。
为方便测试,创建一个Person类:

java.io.ObjectOutputStream
对象输出流,可以将给定的对象转换为一组字节,然后通过其处理的流将这组字节写出
将一个对象通过对象列转换为字节后并写入文件的操作涉及两个专业名词:
1)对象序列化----对象序列化就是将一个java中的对象按照其结构转化为一组字节的过程(对象输出流完成)
2)持久化----将一组字节写入文件(硬盘上)的过程成为持久化

java.io.ObjectInputStream
对象输入流,用于反序列化对象

网友评论