zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    序列化:

    序列化要实现Serializable这个空接口,要生成uid

    序列化:

    private static final long serialVersionUID = 1L;
    
        public Book(){
            
        }
        
        
        
        public Book(String bookName, String autotName, double price) {
            this.bookName = bookName;
            this.autotName = autotName;
            this.price = price;
        }
    
    
        private String bookName;
        
        private String autotName;
        //transient 不需要序列化的对象
        private double price;
    
        public String getBookName() {
            return bookName;
        }
    
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
    
        public String getAutotName() {
            return autotName;
        }
    
        public void setAutotName(String autotName) {
            this.autotName = autotName;
        }
    
        public double getPrice() {
            return price;
        }
    
        public void setPrice(double price) {
            this.price = price;
        }
    
    
    
        @Override
        public String toString() {
            return "Book [bookName=" + bookName + ", autotName=" + autotName + ", price=" + price + "]";
        }
    FileOutputStream fos = null;
            ObjectOutputStream oos = null;
            File file = new File("book.txt");
            try {
                fos = new FileOutputStream(file);
                oos = new ObjectOutputStream(fos);
                Book book = new Book("听雪楼", "沧月", 30);
                oos.writeObject(book);
                oos.flush();
                fos.close();
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

    反序列化:

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("book.txt")));
            Object book = ois.readObject();
            System.out.println(book);
    //反序列化会报一个空的错
    //这里抛出了没有处理

    集合序列化:

        List<Book> list = new ArrayList<Book>();
            list.add(new Book("听雪楼1", "沧月1", 20));
            list.add(new Book("听雪楼2", "沧月2", 20));
            list.add(new Book("听雪楼3", "沧月3", 20));
            list.add(new Book("听雪楼4", "沧月4", 20));
            list.add(new Book("听雪楼5", "沧月5", 20));
            File file = new File("array.txt");
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
            oos.writeObject(list);
            oos.flush();
            oos.close();
            
            
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
            List<Book> books =  (List<Book>) ois.readObject();
            ois.close();
            for (Book book : books) {
                System.out.println(book);
            }
  • 相关阅读:
    不会吧不会吧,还有开发不会Java填充PDF模板数据的,赶紧看看吧
    关于Redis分布式锁这一篇应该是讲的最好的了,先收藏起来再看!
    iOS-----后台运行
    iOS-----使用GCD实现多线程
    iOS-----线程同步与线程通信
    iOS-----多线程之NSThread
    iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法
    iOS-----使用AddressBookUI管理联系人
    iOS-----使用addressBook管理联系人之修改联系人
    iOS-----简易地CocoaAsyncSocket使用
  • 原文地址:https://www.cnblogs.com/miaomeng/p/8795325.html
Copyright © 2011-2022 走看看