【发布时间】:2012-10-25 07:40:01
【问题描述】:
我使用XStream 在xml file 中写入一个对象。
然后我再次反序列化文件以使用对象。
我的问题是,关闭程序后,xml“文件”消失了。那么如何将这个 xml 文件保存到特定目录呢?我已经尝试过FileOutputStream,但它不起作用......我也用谷歌搜索它,但没有找到适合我的解决方案......
方法savePerson
public void savePerson(String uNummer, Person person) {
System.out.println("save person");
try{
xml = xstream.toXML(person);
}catch (Exception e){
System.err.println("Error in XML Write: " + e.getMessage());
}
}
还有方法readPerson
public Person readPerson(String uNummer) {
System.out.println("read person");
Person person = new Person();
try{
person = (Person) xstream.fromXML(file_path + uNummer + ".xml");
}catch(Exception e){
System.err.println("Error in XML Read: " + e.getMessage());
}
return person;
}
目录:\\releasearea\ToolReleaseArea\PersistenceSave
编辑
正确代码:(作者 ppeterka)
public void savePerson(String uNummer, Person person) {
System.out.println("save person XML");
FileOutputStream fos = null;
try{
xml = xstream.toXML(person);
fos = new FileOutputStream(file_path + uNummer + ".xml");
fos.write("<?xml version=\"1.0\"?>".getBytes("UTF-8"));
byte[] bytes = xml.getBytes("UTF-8");
fos.write(bytes);
}catch (Exception e){
System.err.println("Error in XML Write: " + e.getMessage());
}
finally{
if(fos != null){
try{
fos.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
能贴出文件编写代码吗?您只将序列化发布到字符串。您说您尝试使用 FileWriter;这应该工作
-
不,我的 FileWriter 解决方案不起作用...但是好的,我发布我尝试的代码...
-
别打扰,ppterka 答案的代码应该可以工作
-
刚刚编辑过 :) 现在我试试他的回答
-
ObjectOutputStream 用于java对象序列化;它与 XML 无关。实际上它将二进制数据写入输出流