java基础day22

  • SequenceInputStream
    序列流,对多个流进行合并。
    SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
    注意:
    构造函数
    SequenceInputStream(InputStream s1, InputStream s2)

  • 对象的输入输出流 : 对象的输入输出流 主要的作用是用于写对象的信息与读取对象的信息。 对象信息一旦写到文件上那么对象的信息就可以做到持久化了

对象的输出流: ObjectOutputStream .

对象的输入流: ObjectInputStream

对象输入输出流要注意的细节:
1. 如果对象需要被写出到文件上,那么对象所属的类必须要实现Serializable接口。 Serializable接口没有任何的方法,是一个标识接口而已。
2. 对象的反序列化创建对象的时候并不会调用到构造方法的、
3. serialVersionUID 是用于记录class文件的版本信息的,serialVersionUID这个数字是通过一个类的类名、成员、包名、工程名算出的一个数字。
4. 使用ObjectInputStream反序列化的时候,ObjeectInputStream会先读取文件中的serialVersionUID,然后与本地的class文件的serialVersionUID
进行对比,如果这两个id不一致,那么反序列化就失败了。
5. 如果序列化与反序列化的时候可能会修改类的成员,那么最好一开始就给这个类指定一个serialVersionUID,如果一类已经指定的serialVersionUID,然后
在序列化与反序列化的时候,jvm都不会再自己算这个 class的serialVersionUID了。
6. 如果一个对象某个数据不想被序列化到硬盘上,可以使用关键字transient修饰。
7. 如果一个类维护了另外一个类的引用,那么另外一个类也需要实现Serializable接口。

  • Properties(配置文件类): 主要用于生产配置文件与读取配置文件的信息。
    Properties的方法:
    1,存入键值对:setProperty(key,value);
    2,获取指定键对应的值: getProperty(key);
    3,可以将流中的规则数据加载进行集合,并称为键值对。
    load(InputStream):
    4,可以将集合中的数据进行指定目的的存储。
    store(OutputStram,String comment)

Properties要注意的细节:
1. 如果配置文件的信息一旦使用了中文,那么在使用store方法生成配置文件的时候只能使用字符流解决,如果使用字节流生成配置文件的话,
默认使用的是iso8859-1码表进行编码存储,这时候会出现乱码。
2. 如果Properties中的内容发生了变化,一定要重新使用Properties生成配置文件,否则配置文件信息不会发生变化。

  • 打印流(printStream) 打印流可以打印任意类型的数据,而且打印数据之前都会先把数据转换成字符串再进行打印。

  • 编码与解码

编码: 把看得懂的字符变成看不懂码值这个过程我们称作为编码。

解码: 把码值查找对应的字符,我们把这个过程称作为解码。

注意: 以后编码与解码一般我们都使用统一的码表。否则非常容易出乱码。

转换流:

输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥
InputStreamReader

输出字节流的转换流:
OutputStreamWriter 可以把输出字节流转换成输出字符流 。

转换流的作用:
1. 如果目前所 获取到的是一个字节流需要转换字符流使用,这时候就可以使用转换流。 字节流----> 字符流
2. 使用转换流可以指定编码表进行读写文件。

  • 递归:函数的自身调用函数的自身。
     
     递归的使用前提: 必须要有条件的情况下调用
发布了27 篇原创文章 · 获赞 0 · 访问量 518

猜你喜欢

转载自blog.csdn.net/byzcy/article/details/103214747