tushao
不忘初心,无限更新流学习单位,总结每日学习资料,总结写代码中遇到的问题

练习:将GBK文件转换为UTF-8得文件

  1. 指定GBK编码得转换流,读取文本文件,用InputStreamReader
  2. 使用Utf-8的转换流写入到新文件中,OutputStreamWriter
    代码演示

序列化流:专门用来写对象的以前都是操作字符或者字符串的
1.目的:
把内存中的数据保存在硬盘内部没持久化保存
2.概述:
一种对象化序列机制,把类的对象保存在我们的文件1里面,取出的时候也是对象,可以使用对象的方法

ObjectOutPutStream
对象的持久化存储,对象序列化就是把成员属性和方法存储起来
构造方法
ObjectOutputStream(OutputStream out):--->创建一个指定OutputStream对象的ObjectOutPutStream类对象
独有方法
writeObject(Object obj);---->将指定的对象写道ObjectOutputStream中。
注意:
当某个类需要序列化的时候,没有实现序列化接口就会抛出异常
所以必须实现序列化接口Serializable,然后就可以启用序列化功能了。
Serializable接口又称为标记性接口,打上标记之后说明该类可以序列化和反序列化
如果没有实现这个接口就不可以。
格式:class 类名 implements Serializable

序列化操作
1.需要保存的类实现序列化和反序列化接口Serializable
2.该类的属性不能被transient修饰,否则该属性不能被序列化
序列化实现代码
序列化的类

序列化的实现

ObjectInputStream:反序列化类
1.目的:
反序列化流,将之前序列化的ObjectOutputStream写到文件的对象,再次恢复为内存中的对象
构造方法
ObjectInputStream(inputStream in);---->把学列化的对象反序列化
独有方法
public final Object readObject();---->反序列化流中读取一个对象
饭序列化代码

注意
必须序列化之后才能饭序列化,如果类改变了就需要重新序列化

static关键字:静态关键字
静态优先于对象加入到内存中,所以对下个还没有创建就已经加入内存中了
所以被static修饰得是不参与序列化得

对于JVM
能进行反序列化的对象,前提条件就是必须能找到class文件的类,如果找不到就只能抛出一个classnotfound异常。

当JVM序列化的时候,能找到class文件,但是如果对下个发生了修改,那么反序列化就会抛出一个InvalidClassException异常。

打印流
很方便的打印各种数据类型的值到文件中,不会出现乱码的情况
构造方法
1.PrintStream(File file);--->输出目的地是一个文件
2.PrintStream(String filename);--->输出目的地是一个文件路径
3.PrintStream(OutputStream outr);--->输出目的地是一个输出流
改变数据输出位置
1.打印到控制台:System.out.println();
2.打印到文件中:System.setOut("打印到是吗位置的地址");

posted on 2020-12-17 23:12  是涂绍啊  阅读(99)  评论(0编辑  收藏  举报