我已经看到了很多不同的帖子,关于你应该将一个对象序列化到一个文件的方式,所有这些都在性质上与如何去做以及最佳实践有什么冲突。所以这就是我想要保存的内容:
public class IHandler{
public double currentLoad;
public String currentPrice;
public String configArgs[];
};
我们可以假设configArgs的大小已知我需要创建一个文件,这是我到目前为止所拥有的。
public static void serializeDataOut(IHandler ISH)throws IOException{
String fileName= "Test.txt";
FileOutputStream fos = new FileOutputStream(fileName);
//What do I do here?
}
public static IHandler serializeDataIn(){
//What do I do here?
}
答案 0 :(得分:7)
我想,你想把对象直接写入文件
public static void serializeDataOut(IHandler ish)throws IOException{
String fileName= "Test.txt";
FileOutputStream fos = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ish);
oos.close();
}
public static IHandler serializeDataIn(){
String fileName= "Test.txt";
FileInputStream fin = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fin);
IHandler iHandler= (IHandler) ois.readObject();
ois.close();
return iHandler;
}
我刚刚提供了重要的代码。通过异常处理实现这一点。
答案 1 :(得分:3)
如何序列化对象的示例:
public static void writeToFile(File path, Database data)
{
try(ObjectOutputStream write= new ObjectOutputStream (new FileOutputStream(path)))
{
write.writeObject(data);
}
catch(NotSerializableException nse)
{
//do something
}
catch(IOException eio)
{
//do something
}
}
public static Object readFromFile(File path)
{
Object data = null;
try(ObjectInputStream inFile = new ObjectInputStream(new FileInputStream(path)))
{
data = inFile.readObject();
return data;
}
catch(ClassNotFoundException cnfe)
{
//do something
}
catch(FileNotFoundException fnfe)
{
//do something
}
catch(IOException e)
{
//do something
}
return data;
}
了解更多信息http://docs.oracle.com/javase/tutorial/jndi/objects/serial.html
答案 2 :(得分:1)
您可以使用XMLDecoder / XMLEncoder将JavaBean序列化为xml。以下是来自oracle的Javadocs的两个类的例子:
(的XMLDecoder)
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("Test.xml")));
Object result = d.readObject();
d.close();
(XMLEncoder)
XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("Test.xml")));
e.writeObject(new JButton("Hello, world"));
e.close();
请注意,您需要添加getter和setter并使该类可序列化。
答案 3 :(得分:0)
你想把IHandler写入test.txt文件吗?试试
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.write(IHandler);
如果你想从该文件中读取IHandler,需要这样做
ObjectInputStream ois = new ObjectInputStream(fos);
IHandler iHandler = (IHandler) ois.readObject();