我有一个我想在对象中制作的信息文本文件。
文本文件如下所示:
mediterraneanAvenue 60 0 50 {2, 10, 30, 90, 250} 0
balticAvenue 60 0 50 {4, 20, 60, 180, 450} 0
等等。我可以控制文本文件,所以我可以以任何我需要的方式更改它。但是,有超过30个属性(是的,我正在垄断),我正在寻找一种更有效的方式来复制数据。
我希望实现的是这样的镜像线:
Property mediterraneanAvenue = new Property (60, 0, 50, new int[]{2, 10, 30, 90, 250}, 0);
我遇到了如何从文本文件中读取此信息的问题。我从课程资源和互联网上做了一些研究;很难找到解决方案,而我发现的解决方案比单纯制作对象更复杂,效率更低
我试过的是:
Property[] properties = new Property[28];
...
try {
BufferedReader br = new BufferedReader (new FileReader ("property card info"));
int i;
String lineContents;
while ((lineContents=br.readLine())!= null){
String[] parts = lineContents.split(" ");
properties[i] = new Property (Integer.parseInt(parts[0]), parts[1], parts[2], parts [3], parts[4], parts[5]);
i++;
}
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
我解析了减速的每一部分,但是当我复制代码时,我删除了除第一部分之外的所有部分以保持线路短路。 我似乎正朝着正确的方向前进,但我得到了一个未定义的构造函数错误,并且无法弄清楚如何将数组部分转换为int []
答案 0 :(得分:3)
假设你有这样的课程:
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
}
使用例如this非常易于使用的库将其序列化为XML:
XStream xstream = new XStream();
Person joe = new Person("Joe", "Wayne");
String xml = xstream.toXML(joe); // now you can write XML for example to file
XML将如下所示:
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
正如您所看到的,当您使用XML创建对象时,即使在记事本中也可以轻松编辑它。当然,以后你可以进行反序列化:
Person newJoe = (Person) xstream.fromXML(xml);
创建可编辑设置文件也很简单快捷,例如某些config.xml
。
答案 1 :(得分:0)
尝试json存储对象的加载 http://json.org/java/