Read in file for constants #java

2020-05-03 10:58发布

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.

2条回答
爷的心禁止访问
2楼-- · 2020-05-03 11:28

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.

查看更多
SAY GOODBYE
3楼-- · 2020-05-03 11:43

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.

查看更多
登录 后发表回答