这是交易.
对于我的项目,我必须使用Java和XStream对随机树进行序列化和反序列化.我的老师制作了Tree / RandomTree算法,所以我不必担心.我不知道该怎么做是这样的:我使用FileInputStream来读/写我序列化和反序列化的xml文件,但是当我反序列化时,我不知道用于读取文件的方法.在我读完文件之后,我应该能够从XML转换它,然后将其作为字符串打印出来.这是我到目前为止所拥有的. (我正确导入了所有内容,只是没有将其添加到我的代码段).
FileInputStream fin;
try
{
// Open an input stream
fin = new FileInputStream ("/Users/Pat/programs/randomtree.xml");
//I don't know what to put below this, to read FileInpuStream object fin
String dexml = (String)xstream.fromXML(fin);
System.out.println(dexml);
// Close our input stream
fin.close();
System.out.println(dexml);
// Close our input stream
fin.close();
}
// Catches any error conditions
catch (IOException e)
{
System.err.println ("Unable to read from file");
System.exit(-1);
}
编辑:嘿伙计们,感谢您的帮助,我想出来了;我不认为我必须将其打印为字符串,我只需要制作一个基准测试框架来计时等等,但再次感谢!
最佳答案 xstream.fromXML()方法将为您输入输入流.我认为问题是你将xstream.fromXML(fin)的返回值转换为String,因为它应该转换为你最初序列化的对象类型(我假设为RandomTree).所以代码看起来像这样:
RandomTree tree = (RandomTree)xstream.fromXML(fin);
编辑:在评论中澄清后,作者的目标是首先读入一个字符串,以便在反序列化之前打印XML内容.考虑到这一目标,我建议您查看this thread中提到的IOUtils库