stackoverflow
stackoverflow

Reputation: 19434

Java How do I read and write an internal properties file?

I have a file I'm using to hold system information that my program needs on execution. The program will read from it and write to it periodically. How do I do this? Among other problems, I'm having trouble with paths

Example

enter image description here

How do I read/write to this properites file if deploying application as runnable jar

Upvotes: 2

Views: 2803

Answers (3)

Assaru
Assaru

Reputation: 1

To read from a file you can declare a file reader using a scanner as

Scanner diskReader = new Scanner(new File("myProp.properties"));

After then for example if you want to read a boolean value from the properties file use

boolean Example = diskReader.nextBoolean();

If you wan't to write to a file it's a bit more complicated but this is how I do it:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

public class UpdateAFile {

    static Random random = new Random();
    static int numberValue = random.nextInt(100);

    public static void main(String[] args) {
        File file = new File("myFile.txt");
        BufferedWriter writer = null;
        Scanner diskScanner = null;

        try {
            writer = new BufferedWriter(new FileWriter(file, true));
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            diskScanner = new Scanner(file);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }

        appendTo(writer, Integer.valueOf(numberValue).toString());
        int otherValue = diskScanner.nextInt();
        appendTo(writer, Integer.valueOf(otherValue + 10).toString());
        int yetAnotherValue = diskScanner.nextInt();
        appendTo(writer, Integer.valueOf(yetAnotherValue * 10).toString());

        try {
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    static void appendTo(BufferedWriter writer, String string) {
        try {
            writer.write(string);
            writer.newLine();
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

And then write to the file by:

diskWriter.write("BlahBlahBlah");

Upvotes: 0

ianpojman
ianpojman

Reputation: 1793

You can't write to a file that exists as part of a ZIP file... it does not exist as a file on the filesystem.

Considered the Preferences API?

Upvotes: 2

ant
ant

Reputation: 22948

Take a look at the http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

You can utilize this class to use your key=value pairs in the property/config file

Second part of your question, how to build a runnable jar. I'd do that with maven, take a look at this :

How can I create an executable JAR with dependencies using Maven?

and this :

http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

I see you're not using maven to build your project altogether

Upvotes: 8

Related Questions