今天要在我的项目中要在原有的数据结构中添加一个字段,最后决定使用对象序列化技术将对象传过去,我们的对象是封装在一个Map中的。我介绍的过程是根据我在使用过程中所使用的方法。
首先,要使用对象序列化,我们应该知道ObjectInputStream和ObjectOutputStream这两个对象读写流。这两个流负责将序列化后的对象写入文件和从文件中读出来。同时,只有实现了Serializable接口的对象才能被序列化,需要指出的是并不是所有的类对象都可以被序列化。下面是write(Object os)-负责将序列化的对象写入文件和read()方法-负责从文件中反序列化对象。
public boolean write(String o) {
try {
OutputStream output = new FileOutputStream("./file/serializable");//指定文件的输出路径s
ObjectOutputStream obOutput = new ObjectOutputStream(output);
obOutput.writeObject(o);
obOutput.flush();
obOutput.close();
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public String read() {
try {
InputStream input = new FileInputStream("./file/serializable");//指定文件的读入路径
ObjectInputStream obInput = new ObjectInputStream(input);
return (String) obInput.readObject();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
需要指出的是,写入的对象可以是自定义对象,但是自定义对象必须实现Serializable接口才能被序列化。同时对象中的对象属性也会被序列化,同理若是自定义对象也要实现serializable接口。
序列化的东西就说那么多,可能在理论上不是说的很详细,若想进一步深入的了解可以参考其他文献,此处只给出使用方法,若您转载不胜感激,但请注明出处,谢谢!