0

我有一个名为person.properties. 我需要添加几个人条目。一个人条目将有一个Name, Age, Telephone。此属性文件中将有许多 Person 条目。

ID : 1
Name: joe
Age: 30
Telephone: 444444
ID : 2
Name: Anne
Age: 20
Telephone: 575757
ID : 3
Name: Matt
Age: 17
Telephone : 7878787
ID : 4
Name: Chris
Age: 21
Telephone : 6767676

我需要读取属性文件并将每条记录保存在一个Person对象中。

Person p = new Person();
p.setId(ADD THE FIRST VALUE OF ID FROM THE PROPERTY FILE);
p.setName(ADD THE FIRST VALUE OF NAME FROM THE PROPERTY FILE);

明智地..并将其保存在数组中。

我认为,我将无法从上面的 person.properties 文件中读取并根据需要将其保存到 person 对象中。因为我key在属性文件中有相同的内容。因此,我怎样才能做到这一点?

4

3 回答 3

3

您不必为此使用这些Property方法,只需将文件作为文本文件读取并手动解析即可:

Scanner s = new Scanner(new File("propertyfile.properties"));
while (s.hasNextLine()) {
    String id = s.nextLine().split(":")[1].trim();
    String name = s.nextLine().split(":")[1].trim();
    String age = s.nextLine().split(":")[1].trim();
    String phone = s.nextLine().split(":")[1].trim();
}
于 2012-12-05T16:26:53.090 回答
2

您描述的文件格式并不是真正的属性文件。只需自己阅读,使用类似的东西

public File openFile(String URI); // write this yourself

public void readFile(File names) {
  BufferedReader br = new BufferedReader(new FileReader(name));

  while(br.ready()) {
    String next = br.readLine();
    String[] split = next.split(" : ");
    // handle each case, etc.

文件修改

如果要修改密钥并将其写回相同的位置,则应使用数据库。这里有两个免费的:MySQLSQLite。可以以这种方式编辑文件,但使用数据库更容易,这就是它的设计目的。

于 2012-12-05T16:27:07.457 回答
1

我认为你所做的实际上不是java中属性文件的目的。不过,这里是如何处理属性文件:

    Properties prop = new Properties();

    try {
           //load a properties file
        prop.load(new FileInputStream("file.properties"));

           //get the property value and print it out
            System.out.println(prop.getProperty("name"));
        System.out.println(prop.getProperty("age"));
        System.out.println(prop.getProperty("telephone"));

    } catch (IOException ex) {
        ex.printStackTrace();
    }

这可以帮助你或你真正想做的事吗?

我认为对于您的方法,数据库样式的东西会更好。

于 2012-12-05T16:26:51.650 回答