Best way to read properties file in java?

后端 未结 3 811
遇见更好的自我
遇见更好的自我 2020-12-10 09:18

I am aware of two ways to read a .properties file:

1- System.getProperties.load(Inputstream for .properties file);

2- Creating a new Properties object and

相关标签:
3条回答
  • 2020-12-10 09:23

    Depends on what the properties file represents. If it represents system properties which needs to override/supply some default system properties, then go for the first approach. But if it represents application-specific properties (which is more often the usual case), then go for the second approach.

    0 讨论(0)
  • 2020-12-10 09:30

    we will read properties files using the URl...

     Properties props = new Properties();
     try
     {
         java.net.URL url = Thread.currentThread().getContextClassLoader().getResource(fileName);
        java.net.URL url2 = ClassLoader.getSystemResource(fileName);
         props.load(url.openStream());
     }
     catch (FileNotFoundException e)
     {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
     catch (IOException e)
     {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
     return props;
    
    0 讨论(0)
  • 2020-12-10 09:33

    IMO, it is a BAD idea to load application properties into the System properties object. If someone puts bogus property values into the file you are loading, this could cause all sorts of obscure failures. For example, setting "java.home" to a bogus value will cause JavaMail to fail, and setting one of the "*.separator" properties could cause all sorts of things to behave strangely.

    If your application really needs to "overlay" the system properties, then it would be better to do this:

        Properties props = new Properties(System.getProperties());
        props.load(someInputStream);
    

    If it doesn't, then just load the Properties as follows:

        Properties props = new Properties();
        props.load(someInputStream);
    

    If for some reason you need to override values in the System Properties object itself, then you should do it much more carefully / selectively.

    0 讨论(0)
提交回复
热议问题