2022-08-09 第四组 王佳齐 学习笔记

思维导图

 

 

学习笔记

IO流(输入输出流)

1.按照流向分

输入流:从硬盘上读取数据到内存。(读)

输出流:从内存写出数据到硬盘。(写)

一个文件在传输过程中经历了多次的拷贝。IO的性能本身很低。

2.按照操作单元分

字节流:是一个字节一个字节的操作。二进制操作。操作任意类型的文件。

字符流:是一个字符一个字符的操作。一个字符是两个字节,主要用来处理文本文件【只能有文

字】

.txt,.java,.py,.xml,.properties,.html,.css,.js

3.按照角色划分

节点流:直接操作一个特定的IO设备。

处理流:在节点流的基础上,做进一步的处理。

 

在Java中输入、输出流常用的流

 

 

 

字节输入流

字节输出流

字符输入流

字符输出流

抽象基类

InputStream

OutputStream

Reader

Writer

访问文件(节点流)

FileInputStream

FileOutputStream

FileReader

FileWriter

缓冲流(处理流)

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

操作对象【只能字节操作】

ObjectInputStream

ObjectOutputStream

   

 

 

流到底怎么用?

输入流:一点一点的往内存中读数据!

字节输入流:

1.创建一个FileInputStream对象【多态的方式】

2.定义一个标记用来控制输入流的读取

3.循环读取,如果读取到了-1,说明文件读到了末尾

4.关闭资源*****

注意:我们发现一个流读完了就没有了,不可再读;当一个流读完之后,会默认调用mark和

reseset方法来进行记录和重置,这个流就已经重置到了上次读完的位置,所以就无法再

次读取内容,并不是读完一次之后就关闭了流,流是不会自己关闭的。

字节输出流:

FileOutputStream构造器

boolean append参数:如果传入true,则代表在原有的基础上追加,不覆盖;

如果传入false,或者不传,覆盖原有内容。

写的操作,目标文件如果不存在会自动新建。

 

字符流:【了解】

 

字符处理流(用的最多)

缓冲流:【可以读写字符串】

外层流,内层流,外层流关闭,内层流也关闭了;

 

序列化与反序列化:操作对象

序列化:将对象写入到IO流当中,把内存中的对象变成字节数字,可以机型存储和传输

反序列化:从IO流中恢复对象,将存储在硬盘上或者从网络中接收的数据恢复成对象模型

使用场景:所有可在网络上传输的对象都必须是可序列化的,否则会报错,所有保存在硬盘上的对

象也必须是可序列化的。

序列化版本号:

反序列化必须拥有class文件,但随着项目的升级,class文件也会升级,序列化保证了升级前后的

兼容性。

如何保障的?

在序列化时,除了要实现序列化接口,还要加上版本号,不加的话,如果改变了原本类中的某些内

容会导致在读文件时找不到,版本号可以自由指定,如果不指定,JVM会根据类信息计算版本号,

与原来的无法匹配,读的时候会报错,如果不写版本号,不利于JVM的移殖,不同的JVM计算规则

不同,可能会导致反序列化无法进行;如果只是更高方法无需修改版本号,如果修改的是静态/瞬态

变量也无需修改版本号,反序列化不会受到影响。

 

总结

 

1.所有要进行网络传输的对象都需要实现序列化接口

2.对象的类名,实例变量都会被序列化,但是方法和类变量以及瞬态变量不会被序列化

3.如果想让某个变量不被序列化,可以使用transient修饰

4.序列化对象的引用类型成员变量,也必须是可序列化的,否则会报错

5.反序列化时,必须有序列化对象的.class文件

6.如果一个对象被序列化多次,只有第一次时二进制流,以后都只要保存序列化的版本号

7.建议所有的可序列化的类加上版本号

 

我们最终会吧所有的.class文件打包,把这个包部署到服务器上

从始至终.java仅仅是我们程序员写的,给程序员看的

.java甚至不会参与到打包中,不会出现在服务器上

 

运维人员部署的是.class文件

我们的.properies属性文件不会参与编译,一但数据库升级,改变此文件即可,否则要改变源码,

很耗费资源

 

File类不能够操作文件的内容

 

学习心得:今天学了很多IO流的类,有点混乱,晚上做一遍案例和思维导图之后,清晰了很多。

posted @ 2022-08-09 21:50  Iamnotarapper  阅读(44)  评论(0)    收藏  举报
ヾ(≧O≦)〃嗷~