Read in file for constants #java

2020-05-03 11:04发布

问题:

I want to read in a datafile that has several constants for my program (e.g. MAXARRAYSIZE).
I then want these constants to be accessible anywhere in my program by typing something like: ConstantsClassName.MAXARRAYSIZE. How do I implement this class?

Once assigned from the datafile, these constants will never again change value during program execution.

Thanks.

回答1:

Use a static bloc in ConstantsClassName class.

public class ConstantsClassName{
    public static final  String MAXARRAYSIZE;
    static{
        // read your file and store the data in;
        MAXARRAYSIZE = valueRetrievedFromFile;
    }
}

MAXARRAYSIZE should be MAX_ARRAY_SIZE if you follow Java conventions for constants declaration.



回答2:

If their are lots of constants in your file, you can use below snippet of code:

public static final HashMap<String, String> keyValues = new HashMap<>();
static{
    BufferedReader br = null;
    String line = null;
    try{
        br = new BufferedReader(new FileReader("datafile.txt"));
        while((line=br.readLine())!=null){
            //if Constant name and Value is separated by space
            keyValues.put(line.split(" ")[0], line.split(" ")[1]);
        }
    }catch(IOException e){
        e.printStackTrace();
    }
}

Now use the keyValues HashMap to get the value you have for the constant like

keyValues.get("MAXARRAYSIZE");

In this way you do not have to define multiple constant variables for multiple constants, only keyValues HashMap is sufficient to store all the constants and its value. Hope it helps.