CSDN上有一篇很好的文章《 Java读取Properties文件的六种方法》,http://blog.csdn.net/senton/archive/2009/04/16/4083127.aspx。对java读取properties的方法做了总结,现在就自己在实际中遇到的问题进行下补充。
首先简单描述下《 Java读取Properties文件的六种方法》:
1。使用java.util.Properties类的load()方法
2。使用java.util.ResourceBundle类的getBundle()方法
3。使用java.util.PropertyResourceBundle类的构造函数
4。使用class变量的getResourceAsStream()方法
5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
问题现象:
在eclipse开发环境下,程序能正常地读取properties文件,但是将工程打成jar包后,放到服务器上执行,报错“找不到系统文件:XXXX.properties”。XXXX.properties放置于工程的根目录下,代码中读取properties文件的方法是使用的上面博文中的法一:
InputStream in = new BufferedInputStream(new FileInputStream(”\\XXXX.properties“));
pro.load(in);
分析过程:
在File.Class的API中有这样一句话:“默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。”在代码中加入:
String userDir = System.getProperty("user.dir");
发现IDE环境下的“user.dir”为当前工程的根目录,所以能够执行,它的效果就相当于:
String userDir = System.getProperty("user.dir");
InputStream in = new BufferedInputStream(new FileInputStream(userDir +“\\XXXX.properties”)); //相当于加上“user.dir”的绝对路径
pro.load(in);
而当使用java脚本启动java程序时,“user.dir”是java程序启动的当前目录,于是将启动脚本放到和jar包同一目录下,成功!
之后,将properties放到包内,再次打包,报错。说明使用File去读取包内的文件是会出错的,因为在$user.dir$路径下并不存在独立的XXXX.properties。改而使用《 Java读取Properties文件的六种方法》介绍的法六和法四,执行通过,代码如下:
//方法五
InputStream in = ClassLoader.getSystemResourceAsStream("XXXX.properties");
//方法六
//InputStream in = Object.class.getResourceAsStream("/XXXX.properties");
pro.load(in);
结论:
properties的读取方法受到文件放置的位置的影响。当properties位于jar包内部时,使用法五和法六,当properties位于jar包外部时,使用法一,同时将java启动脚本放在jar包的同一目录下面或者在同一目录下启动java程序。
其他三种方法没有尝试。
分享到:
相关推荐
java 读取properties文件代码
java读写properties配置文件
java完美读取properties文件
Java读取Properties文件的六种方法
java如何读取properties配置文件
java解析读取properties文件的6中方法总结
JAVA读取properties的值,JAVA读取properties文件,JAVA读取properties的内容
最高效,最简洁的读取properties文件的源码。二十行以内,需导入log4j包。 将文件代码拷贝到你的工程,如果提示你找不到 import org.apache.log4j.Logger; 直接点击该错误,选择自动添加log4j包。即可.....祝你好运...
Java源码读写Properties文件.rar
java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题
主要介绍了Python实现读取Properties配置文件的方法,结合实例形式分析了Python读取Properties配置文件类的定义与使用相关操作技巧,需要的朋友可以参考下
利用Java的Properties 类读取配置文件信息! 读取Properties文件的例子
读取properties文件返回map
java实现properties文件读取
java类读取properties文件,简单易用,方便快捷。
java读取properties文件的工具类,传入配置文件名字和其中的key就可以读取
解决JAVA读取properties中文乱码问题
ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容
java读取properties文件六种方法
java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题