Sharon Watinsan
Sharon Watinsan

Reputation: 9850

Reading a property file and saving to an object

I have property file called person.properties. I need to add several person entries in. A person entry will have a Name, Age, Telephone. There will be many Person entries in this Property file.

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

I need to read the property file and save each record in an Person object.

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);

like wise.. and save it in an array.

I think, that i will not be able to read from the person.properties file above and save it to the person object as i require. Because i am having the same key in the property file. Therefore how can i achieve this?

Upvotes: 0

Views: 4555

Answers (3)

durron597
durron597

Reputation: 32323

The file format you describe is not really a properties file. Just read it yourself, using something like

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.

Modification of file

If you want to modify the key and write it back to the same position, you should use a database. Here are two free ones: MySQL and SQLite. It's possible to edit the file in that way, but it's much easier to just do it with a database, that's what it's designed for.

Upvotes: 2

Udo Klimaschewski
Udo Klimaschewski

Reputation: 5315

You don't have to use the Property methods for this, you can simply read the file as a text file and parse it manually:

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();
}

Upvotes: 3

christian1337
christian1337

Reputation: 61

What you do is actually not the purpose of property files in java, I think. Nevertheless, here is how to handle property files:

    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();
    }

Could this help you or what you actually want to do?

I think for your approach a database style thingy would be better.

Upvotes: 1

Related Questions