2011-10-12 45 views
1

我正在使用Config。属性文件从如何指定属性文件的路径

Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));

参数传递给我的方法,现在我加载文件,因为我不希望保持它的硬编码如何与包级别设置。或在应用程序内。

在此先感谢。

+0

作为领域在公共枚举?您可能需要将路径存储在某个.java源文件或某些属性文件中,而后者的“解决方案”仅仅是愚蠢的。 –

回答

4

使用ResourceBundle类。你只需要指定属性文件名。它将从任何路径获取文件,只要该路径应位于类路径中即可。

例子:

// abc.properties is the properties file,which is placed in the class path.You just need to 
// specify its name and the properties file gets loaded. 
ResourceBundle s=ResourceBundle.getBundle("abc"); 
     s.getString("key"); //any key from properties file... 
1

把配置文件在类路径(在您的.class文件),并使用

getClass().getClassLoader().getResourceAsStream(_path_to_config_file); 
0

有两种方式来获得在运行时的配置文件的路径访问它。

a)从数据库中获取它。 b)从服务器级配置的JVM的自定义属性中获取它 最佳进程是“b”,如果路径更改并且只需重新启动服务器,则可以随时更改JVM的属性。

1

我也只是要建议,但是你也可以通过命令行参数传递的完整路径的配置文件,例如:

java YourApp -config C:\\config.properties 
1

属性文件打包与应用程序不应该使用文件系统加载,但使用类加载器。事实上,一旦应用程序被打包,属性文件将被嵌入到一个jar文件中,并带有.class文件。

如果config.properties文件是在包com.foo.bar,那么就应该用

InputStream in = SomeClass.class.getResourceAsStream("/com/foo/bar/config.properties"); 

或用

InputStream in = SomeClass.class.getClassLoader().getResourceAsStream("com/foo/bar/config.properties"); 

您也可以使用相对路径加载它加载它。如果SomeClass也在包com.foo.bar中,那么您可以加载它。

InputStream in = SomeClass.class.getResourceAsStream("config.properties"); 

需要注意的是Java变量应该总是以小写字母开头:config而不是Config

+0

非常感谢!很有帮助。 – BustedSanta

0

如果它只是你担心,你可以使用相对路径的路径:

Config.load(new FileInputStream("Config.properties")); 

这将查找当前工作目录。 upsdie:死简单。缺点是:它不够强大。如果您从其他位置启动您的应用程序而未更改工作目录,则不会找到该文件。