我正在使用Config。属性文件从如何指定属性文件的路径
Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));
参数传递给我的方法,现在我加载文件,因为我不希望保持它的硬编码如何与包级别设置。或在应用程序内。
在此先感谢。
我正在使用Config。属性文件从如何指定属性文件的路径
Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));
参数传递给我的方法,现在我加载文件,因为我不希望保持它的硬编码如何与包级别设置。或在应用程序内。
在此先感谢。
使用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...
把配置文件在类路径(在您的.class文件),并使用
getClass().getClassLoader().getResourceAsStream(_path_to_config_file);
有两种方式来获得在运行时的配置文件的路径访问它。
a)从数据库中获取它。 b)从服务器级配置的JVM的自定义属性中获取它 最佳进程是“b”,如果路径更改并且只需重新启动服务器,则可以随时更改JVM的属性。
我也只是要建议,但是你也可以通过命令行参数传递的完整路径的配置文件,例如:
java YourApp -config C:\\config.properties
属性文件打包与应用程序不应该使用文件系统加载,但使用类加载器。事实上,一旦应用程序被打包,属性文件将被嵌入到一个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
。
非常感谢!很有帮助。 – BustedSanta
如果它只是你担心,你可以使用相对路径的路径:
Config.load(new FileInputStream("Config.properties"));
这将查找当前工作目录。 upsdie:死简单。缺点是:它不够强大。如果您从其他位置启动您的应用程序而未更改工作目录,则不会找到该文件。
作为领域在公共枚举?您可能需要将路径存储在某个.java源文件或某些属性文件中,而后者的“解决方案”仅仅是愚蠢的。 –