如何从文本文件创建对象?

时间:2013-06-16 15:31:08

标签: java arrays object text

我有一个我想在对象中制作的信息文本文件。

文本文件如下所示:

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 []

2 个答案:

答案 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/