Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

绿色网站无广告
会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

对象的保存和载入

来源: 未知 分享至:

1.第一种方法:采用手动的方法

手动的将对象的各个字段写入到文件中,读取时再通过特定的标识符从文件中获取各个属性的值,生成对象。可以手工编辑文件

缺点:缺乏灵活性,代码量大

实现:略

2.第二种方法:采用Java的序列化机制

实现简洁,代码量小,生成的文件都是二进制的

缺点:文件不可编辑

实现:略

3.第三种方法:以XML文件的形式保存和读取(方法很多,以下使用两种方式简单实现)

①采用 java.beans.XMLEncoder 或者 java.beans.XMLDecoder

首先建立  Contact.java  (JavaBean)

import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @Author:胡家威  
 * @CreateTime:2011-9-27 下午09:28:57
 * @Description:联系人的类
 */

@XmlRootElement //注意注解,XML的根元素
public class Contact implements Serializable {

    private static final long serialVersionUID = 4445549905840681824L;
    
    private long id;
    private String name;
    private String email;
    
    public Contact() {
    }
    
    public Contact(long id){
        this.id = id;
    }
    
    //每个getter方法上面都有一个注解,表明它是一个XML的元素
    @XmlElement
    public long getId(){
        return id;
    }
    @XmlElement
    public String getName() {
        return name;
    }
    @XmlElement
    public String getEmail() {
        return email;
    }
    
    public void setName(String name) {
        this.name = name;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setId(long id) {
        this.id = id;
    }
    
}

 

建立测试的类:

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
 * @Author:胡家威  
 * @CreateTime:2011-9-27 下午09:27:55
 * @Description:JAXB的简单使用实例
 */

public class JaxbTest {

    private Marshaller marshaller;
    private Unmarshaller unmarshaller;
    private String filename;
    
    public JaxbTest() {
        try {
            JAXBContext context = JAXBContext.newInstance(Contact.class);
            marshaller = context.createMarshaller();
            unmarshaller = context.createUnmarshaller();        
            filename="contact.xml";
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    // 创建一个新的联系人
    public void creatContact(Contact contact) {
        FileWriter fw = null;
        try {
            fw = new FileWriter(filename);
            marshaller.marshal(contact, fw);
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    // 读取一个联系人
    public Contact readContact() {
        FileReader fr = null;
        Contact contact = null;
        try {
            fr = new FileReader(new File(filename));
            contact = (Contact)unmarshaller.unmarshal(fr);
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return contact;
    }
    
    public static void main(String[] args) {
        JaxbTest test = new JaxbTest();
        Contact contact = new Contact();
        contact.setId(1);
        contact.setName("name");
        contact.setEmail("email");
        test.creatContact(contact);
        System.out.println("---");
        Contact contact2 = test.readContact();
        if(contact2!=null){
            System.out.println(contact2.getId());
            System.out.println(contact2.getName());
            System.out.println(contact2.getEmail());
        }
    }
    
}

 

生成的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contact>
    <email>email</email>
    <id>1</id>
    <name>name</name>
</contact>

 

②采用JAXB

Javabean使用上面的Contact类

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @Author:胡家威  
 * @CreateTime:2011-9-27 下午10:20:20
 * @Description:XMLEncoder和XMLDecoder的使用实例
 */

public class XMLEDncoder {

    private static String filename = 
                
               



               

            

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史