zoukankan      html  css  js  c++  java
  • 2020.12.17转换·流,序列化流,打印流

    练习:将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("打印到是吗位置的地址");

  • 相关阅读:
    【学习】Linux Shell脚本编程
    Linux 系统进程相关命令
    Linux 文件权限管理
    Linux 用户关联命令
    Linux shell 及命令汇总
    服务器通过树莓派控制继电器
    华为绩效管理:这样减员、增效、加薪,不服不行!!
    工作十年的程序员,却拿着毕业三年的工资,再不开窍就真晚了!
    员工离职原因,只有两点最真实,其他都是扯淡!
    最全面的2017物联网安全事件盘点
  • 原文地址:https://www.cnblogs.com/tushao/p/14152559.html
Copyright © 2011-2022 走看看