zoukankan      html  css  js  c++  java
  • 转换流_序列化流

    转换流

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    public class IOStreamRW {
        public static void main(String[] args) throws IOException {
         //字符—>字节
            //Java底层调用FileOutputStream以字节形式写出数据
            //OutputStreamWriter将传入的字符转化为字节
            OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("E:\a.txt"),"utf-8");    //这里可以规定解析时的编码
            ow.write("abcdefgszbjkffasgszbjzxnbzlkzlxzkj");
            ow.close();
         //字节—>字符
            //Java底层调用FileInputStream以字节形式读取数据
            //InputStreamReader将读取到的字节转化为字符
            InputStreamReader ir = new InputStreamReader(new FileInputStream("E:\a.txt"));
            //定义一个字符数组来存储读取到的字节数据
            char[] c = new char[10];
            int len = -1;
            //读取到字节数据后以字符形式输出
            while((len = ir.read(c))!=-1){
                System.out.println(new String(c, 0, len));
            }
            ir.close();
        }
    }

    序列化流

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    public class SerializableDemo {
        public static void main(String[] args) throws Exception{
        //序列化
        //对象—>字节
            Person p = new Person();
            p.setName("伍六七");
            p.setAge(18);
      p.setId("零零柒");
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\d.data"));
            oos.writeObject(p);
            oos.close();
            /*
        //反序列化
        //字节—>对象
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\d.data"));    //读取文件中字节数据,然后用ObjectInputStream将字节数据转换为对象
            Person p = (Person)ois.readObject();
            ois.close();
            System.out.println(p.getName());
            System.out.println(p.getAge());
            */
        }
    }
    //创建Person类提供get_set方法
    //一个对象想要被序列化,它所对应的类必须实现Serializable接口
    class Person implements Serializable{
      //版本号
      //没有手动指定版本号,会自动计算一个版本号
      //为了让序列化出去的对象可以反序列回来,需要手动指定版本号,防止类中对象发生改变造成数据丢失
      private static final long serialVersionUID = -5209149214681656519L;
        private String name;
        private int age;
      //用static/transient修饰的属性不会被序列化,不占内存
      //static修饰后本身不需要被序列化,transient则是强制不被序列化
      static String id;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
      public int getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
    }

    注:集合不允许被一次性序列化出去,即一次只能序列化一个对象

  • 相关阅读:
    crt中文乱码
    idea使用git版本控制忽略部分文件
    Springboot配置redis连接池参数
    redis通过lua脚本实现分布式锁
    jodaTime的使用
    jmap的使用
    代理服务器没有响应解决方案
    C/C/C++中暂停调试的三种方法C++中暂停调试的三种方法
    C/C/C++中暂停调试的三种方法C++中暂停调试的三种方法
    四种常见的post请求中的参数形式
  • 原文地址:https://www.cnblogs.com/lj-cn/p/9374391.html
Copyright © 2011-2022 走看看