zoukankan      html  css  js  c++  java
  • java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流

    package com.swift.baseKnowledge;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.ObjectInputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
    import java.io.PrintWriter;
    
    /*现有一字符串:”我爱Java”。将该字符串保存到当前项目根目录下的a.txt文件中。要求:使用utf8编码保存。
    操作步骤描述
    1.创建文件字节输出流关联目标文件
    2.根据文件字节输出流创建转换输出流对象,并指定编码字符集为:uft8
    3.调用流对象的方法将字符串写出到文件中。
    4.关闭流并释放资源。*/
    
    /*利用转换输入流将当前项目根目录下使用utf8编码的a.txt文件的内容读取出来,并打印在控制台上。要求:不能出现乱码的情况。
        操作步骤描述
    1.创建字节输入流对象指定文件路径。
    2.根据字节输入流对象创建转换输入流对象并指定字符集编码为:utf8
    3.调用转换输入流对象的读取方法读取内容
    4.关闭流释放资源*/
    
    /*定义一个学生类,包含姓名,年龄,性别等成员变量,提供setters和getters方法以及构造方法。在测试类中创建一个学生对象,给学生对象的三个成员变量赋值。然后将该对象序列化到当前项目根目录下的stu.txt文件中。
    操作步骤描述
    1.定义学生类并实现序列化接口和测试类
    2.在测试类中创建学生对象
    3.创建文件字节输出流对象并关联目标文件
    4.根据文件字节输出流对象创建对象输出流对象
    5.调用对象输出流对象的方法将学生对象保存到文件中
    6.关闭流释放资源*/
    
    /*将需求4中序列化到stu.txt文件中的学生对象读取出来。
    操作步骤描述
    1.创建文件字节输入流对象关联目标文件
    2.根据文件字节输入流对象创建对象输入流对象
    3.调用对象输入流对象的方法从文件中获取学生对象
    4.关闭流释放资源。*/
    
    /*1.请简述下打印流的特点及打印流的分类
    2.从键盘录入一行字符串,利用字节打印流将该行字符串保存到当前项目根目录下的d.txt文件中
        操作步骤描述
        2.1.创建字节打印流对象并关联文件路径
        2.2.调用字节打印流对象的打印方法将内容输入到目标文件中
        2.3.关闭流释放资源
    3.请简述下配置classpath添加jar包到项目中的步骤
    4.通过Commons-IO完成文件复制的功能*/
    
    import java.io.Serializable;
    
    public class Xuliehua implements Serializable{
    
        public static void main(String[] args) throws IOException, ReflectiveOperationException {
            
            OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.txt"),"utf-8");
            osw.write("我爱Java");
            osw.flush();
            osw.close();
            
            InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),"utf-8");
            char[] chars=new char[1024];
            StringBuilder sb=new StringBuilder();
            int len;
            while((len=isr.read(chars))!=-1) {
                sb.append(chars, 0, len);
            }
            System.out.println(sb);
            
    //        Student stu=new Student();
    //        stu.setName("张三");
    //        stu.setAge(20);
    //        stu.setSex("男");
    //        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("stu.txt"));
    //        oos.writeObject(stu);
    //        oos.flush();
    //        oos.close();
            
            ObjectInputStream ois=new ObjectInputStream(new FileInputStream("stu.txt"));
            Object obj=ois.readObject();
            System.out.println(obj);
            
            
            System.out.println(System.out);
            //始终是true 默认选项,所以不需要写也自动刷
            PrintStream p=new PrintStream(System.out,true);
            p.println("Hello");
            p.println("How are you");
            PrintStream ps=new PrintStream(new File("d.txt"));
            ps.println("what should I do for tomorrow.");
            ps.close();
            //必须写true才自动刷,否则不自动刷新
            PrintWriter pw=new PrintWriter(System.out,true);
            pw.println("what");
            pw.println("is");
            pw.close();
            
            
            //静态的不能被序列化 因为序列化的内容为对象,静态的由类直接调用,不属于对象序列,所以不被序列化
            
            //不定义静态,age也不想序列化 transient transient transient 阻止变量被序列化
            
            //Serializable 标记型接口
            
            //序列化后,如果修改代码,不再重新序列化,则出现 InvalidClassException  序列号冲突异常
            
            //即使改了源代码,反序列化也成功运行 成员属性加 static final long SeriaVersionUID=42L; 或者点类上的黄线
            
            //打印流应用于javaWeb 可以自刷新,原样打印  char[] 数组直接打印 String直接打印  其他数组打印哈希值
            
            //CommonsiO 第三方工具
        }
    
    }
  • 相关阅读:
    zoj 2316 Matrix Multiplication 解题报告
    BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
    codeforces 463C. Gargari and Bishops 解题报告
    codeforces 463B Caisa and Pylons 解题报告
    codeforces 463A Caisa and Sugar 解题报告
    CSS3新的字体尺寸单位rem
    CSS中文字体对照表
    引用外部CSS的link和import方式的分析与比较
    CSS样式表引用方式
    10个CSS简写/优化技巧
  • 原文地址:https://www.cnblogs.com/qingyundian/p/8521702.html
Copyright © 2011-2022 走看看