锁定老帖子 主题:java读取配置文件工具类
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-09-19
最近在维护JAVASE的程序代码,需要将原来写死在程序里面的参数移到配置文件里面,
写了一个获取Properties文件的工具类, 代码1: public class PropUtil { public static Properties getPropUtil () { Properties config = new Properties(); InputStream is = null; try { is = PropUtil .class.getClassLoader().getResourceAsStream("prop.properties"); config.load(is); } catch (IOException e) { } finally {//关闭资源 if (is != null) { try { is.close(); } catch (IOException e) { } } } log.debug("return prop config"); return config; } } 代码2: public class PropUtil { private static ResourceBundle resources; public static String getParam(String confFileName,String param) { resources = ResourceBundle.getBundle(confFileName); return resources.getString(param); } } 代码3: public static String getParameter(String key){ Properties params = new Properties(); FileInputStream in = null; String value =null; try { in = new FileInputStream("prop.properties"); params.load(in); value = params.getProperty(key); } catch (java.io.IOException e) { e.printStackTrace(); }finally { if(in!=null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return value; } 我的是一个纯JAVASE的工程,prop.properties文件放在SRC目录下,代码1和代码2可以正常找到配置项,代码3总是提示资源文件不存在. 问题一:不知道JAVASE中默认的根路径是在哪里呢?不是bin目录下吗 问题二:这三种方式哪个更好呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-09-19
最后修改:2012-09-19
1. PropUtil.class.getResourceAsStream("prop.properties"); 说明这个prop.properties和类PropUtil.class是在同一个目录下
2. 如果改成PropUtil.class.getResourceAsStream("/prop.properties"); 注意有个斜杠,说明是在classpath根目录下,eclipse写的话一般如果是bin目录,netbeans的话可能会在build/classes目录下 3. FileInputStream("prop.properties"); 这种是从System Property 'user.dir'下读prop.properties, 用IDE编写的话默认就是你的工程目录,一般来说user.dir是执行java命令所在的当前目录。 4. 不存在所谓的JAVASE默认根路径的说法,java(无论是J2SE还是,J2EE, Web)中只有classpath,看你的java命令怎么配置classpath ********************************** 之前没看清楚楼主内容,这次修改了这个回复内容,去掉PropUtil.class.getClassLoader()的classloader方法 |
|
返回顶楼 | |
发表时间:2012-09-19
diggywang 写道 1. PropUtil .class.getClassLoader().getResourceAsStream("prop.properties"); 说明这个prop.properties和类PropUtil.class是在同一个目录下
2. 如果改成PropUtil .class.getClassLoader().getResourceAsStream("/prop.properties"); 注意有个斜杠,说明是在classpath根目录下,eclipse写的话一般如果是bin目录,netbeans的话可能会在build/classes目录下 3. FileInputStream("prop.properties"); 这种是从System Property 'user.dir'下读prop.properties, 用IDE编写的话默认就是你的工程目录,一般来说user.dir是执行java命令所在的当前目录。 4. 不存在所谓的JAVASE默认根路径的说法,java(无论是J2SE还是,J2EE, Web)中只有classpath,看你的java命令怎么配置classpath 学了一招呵呵 |
|
返回顶楼 | |
发表时间:2012-09-19
diggywang 写道 2. 如果改成PropUtil .class.getClassLoader().getResourceAsStream("/prop.properties"); 注意有个斜杠,说明是在classpath根目录下,eclipse写的话一般如果是bin目录,netbeans的话可能会在build/classes目录下 我用的这个:PropUtil .class.getClassLoader().getResourceAsStream("prop.properties");可是我的配置文件在SRC目录下了,也可以得到,只是没有这个/ |
|
返回顶楼 | |
发表时间:2012-09-19
commons-configuration
|
|
返回顶楼 | |
发表时间:2012-09-19
diggywang 写道 1. PropUtil .class.getClassLoader().getResourceAsStream("prop.properties"); 说明这个prop.properties和类PropUtil.class是在同一个目录下
2. 如果改成PropUtil .class.getClassLoader().getResourceAsStream("/prop.properties"); 注意有个斜杠,说明是在classpath根目录下,eclipse写的话一般如果是bin目录,netbeans的话可能会在build/classes目录下 3. FileInputStream("prop.properties"); 这种是从System Property 'user.dir'下读prop.properties, 用IDE编写的话默认就是你的工程目录,一般来说user.dir是执行java命令所在的当前目录。 4. 不存在所谓的JAVASE默认根路径的说法,java(无论是J2SE还是,J2EE, Web)中只有classpath,看你的java命令怎么配置classpath 首先1和2的说法是错的,用了getClassLoader()不需要加/,严重误导人; 3最好写上你文件的绝对地址,这个可以获得; 4正确 |
|
返回顶楼 | |
发表时间:2012-09-19
diggywang 写道 4正确 [/b][/color] commons-configuration是正确的?我都没明白他说的是啥,求指教 |
|
返回顶楼 | |
发表时间:2012-09-19
myangle89 写道 diggywang 写道 4正确 [/b][/color] commons-configuration是正确的?我都没明白他说的是啥,求指教 ....4指的是第4条 不是4楼的意思 |
|
返回顶楼 | |
发表时间:2012-09-19
傲世凡尘 写道 myangle89 写道 diggywang 写道 4正确 [/b][/color] commons-configuration是正确的?我都没明白他说的是啥,求指教 ....4指的是第4条 不是4楼的意思 3不写绝对地址也没问题啊,为啥要写绝对地址呢 |
|
返回顶楼 | |
发表时间:2012-09-19
myangle89 写道 傲世凡尘 写道 myangle89 写道 diggywang 写道 4正确 [/b][/color] commons-configuration是正确的?我都没明白他说的是啥,求指教 ....4指的是第4条 不是4楼的意思 3不写绝对地址也没问题啊,为啥要写绝对地址呢 看错了,不好意思 |
|
返回顶楼 | |