将序列化的对象(多个对象,一个一个的保存,不是放到数组中一次性保存)保存到xml文件中,读取时
XMLDecoder decoder = new XMLDecoder(fis);
Object use= null;
try {

while((use=decoder.readObject())!=null){
System.out.println(((User)decoder.readObject()).getUsername());
//userList.add(use);
}

着色那一句](use=decoder.readObject())!=null会因为读取最后一个是空的而出现异常,该怎样解决

解决方案 »

  1.   

    XMLDecoder没用过,一直使用的是xstream,没有遇到过错误,不防考虑试试用这个。
      

  2.   

    这是我用的例子
    package com.tur.demo;import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;public class BeanToXml {
        public static User createUser() {
            User user = new User("Biao", "Passw0rd");
            user.getValues().add("One");
            user.getValues().add("Two");
            user.getValues().add("Three");        user.getCodes()[0] = 0;
            user.getCodes()[1] = 1;
            user.getCodes()[2] = 2;
            user.getCodes()[3] = 3;        return user;
        }    public static void toXml() {
            User user = createUser();        Message message = new Message();
            message.setType("User");
            message.setContent(user);        XStream xstream = new XStream();
            xstream.alias("Message", Message.class);
            xstream.alias("User", User.class); // 别名,输出的时候是User,而不是com.tur.demo.User        System.out.println(xstream.toXML(message));
        }    public static void fromXml() {
            XStream xstream = new XStream();
            xstream.alias("User", User.class);
            xstream.alias("Message", Message.class);        Message message = (Message) xstream.fromXML(ClassLoader.getSystemResource("data.txt"));
            User user = (User) message.getContent();
            System.out.println(user);
        }    public static void toJson() {
            User user = createUser();
            XStream xstream = new XStream(new JettisonMappedXmlDriver());
            xstream.setMode(XStream.NO_REFERENCES);
            xstream.alias("User", User.class);        System.out.println(xstream.toXML(user));
        }    public static void fromJson() {    }    public static void main(String[] args) {
            toXml();
            fromXml();        toJson();
        }
    }class Message {
        private String type;
        private Object content;    String getType() {
            return type;
        }    void setType(String type) {
            this.type = type;
        }    Object getContent() {
            return content;
        }    void setContent(Object content) {
            this.content = content;
        }
    }class User {
        private String username;
        private String password;
        private List<String> values;
        private int[] codes;    public User() {
            this("", "");
        }    public User(String username, String password) {
            this.username = username;
            this.password = password;
            this.values = new ArrayList<String>();
            this.codes = new int[5];
        }    String getUsername() {
            return username;
        }    void setUsername(String username) {
            this.username = username;
        }    String getPassword() {
            return password;
        }    void setPassword(String password) {
            this.password = password;
        }    List<String> getValues() {
            return values;
        }    void setValues(List<String> values) {
            this.values = values;
        }    int[] getCodes() {
            return codes;
        }    void setCodes(int[] codes) {
            this.codes = codes;
        }    @Override
        public String toString() {
            return "User{" +
                    "username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", values=" + values +
                    ", codes=" + Arrays.toString(codes) +
                    '}';
        }
    }