如何一次性将整个properties 读取乱码文件里面的内容读取出来

& & 目开发过程中,使用properties文件作为配置基本上是必不可少的,很多如系统配置信息,文件上传配置信息等等都是以这种方式进行保存。& & 同时学会操作properties文件也是java基础。& & /**& & * @Copyright @ 2012&nb……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程java读取properties文件的几种方法 -
- ITeye技术网站
博客分类:
一、项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下:
1、通过java.util.Properties读取
Properties p=new Properties();
//p需要InputStream对象进行读取文件,而获取InputStream有多种方法:
//1、通过绝对路径:InputStream is=new FileInputStream(filePath);
//2、通过Class.getResourceAsStream(path);
//3、通过ClassLoader.getResourceAsStream(path);
p.load(InputStream is);
is.close();
p.getString(String(key))
2、通过java.util.ResourceBundle读取
ResourceBundle rb=ResourceBundle.getBundle(packageName);
rb.getString(String key);
二、Class.getResourceAsStream与ClassLoader.getResourceAsStream的区别
首先,Java中的getResourceAsStream有以下几种:
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由 ClassLoader获取资源。
2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
4. Jsp下的application内置对象就是上面的ServletContext的一种实现。
其次,getResourceAsStream 用法大致有以下几种:
第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
总结一下,可能只是两种写法
第一:前面有 “&& / ”
“ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面没有 “&& / ”
代表当前类的目录
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
错误:
class.getClassLoader().getResource("*********");这一句抛出空指针异常java.lang.NullPointerException,定位为getClassLoader()返回null
如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,有些jdk的实现是会返回一个null的,
解决:
修改代码如下:
InputStream inputS
ClassLoader cl = XXX. class .getClassLoader();
inputStream = cl.getResourceAsStream( "xx.properties" );
inputStream = ClassLoader.getSystemResourceAsStream( "xx.properties" );
Properties dbProps =
Properties();
dbProps.load(inputStream);
inputStream.close();
所以保险起见我们最好还是使用我们自己写的类来获取classloader,这样一来就不会有问题。
浏览 42041
personbeta
浏览: 106550 次
来自: 北京
注意流只能被读取一次,先读流后,request.getPara ...
呃,如果是文件上传的话,是没办法通过getParameter来 ...请问如何向一个 .properties 文件中写入诸如 city=北京 的内容?
20showmetheway]
发布时间: 1:15:31
编辑:www.fx114.net 我要评论
本篇文章主要介绍了"请问如何向一个 .properties 文件中写入诸如 city=北京 的内容?
20showmetheway]",主要涉及到请问如何向一个 .properties 文件中写入诸如 city=北京 的内容?
20showmetheway]方面的内容,对于请问如何向一个 .properties 文件中写入诸如 city=北京 的内容?
20showmetheway]感兴趣的同学可以参考一下。
谢谢。我也遇到这样的问题,怎样读入中文啊读
value&=&new&String(bundle.getString("key").getBytes("8859_1"),&"GB2312");
File&PropertiesFile&=&new&File("c:\",&"pp");
FileInputStream&fis&=&new&FileInputStream(PropertiesFile);
p&=&new&Properties();
p.load(fis);
p&=&new&Properties();
p.setProperties("key","value");
File&PropertiesFile&=&new&File("c:\",&"pp");
FileOuputStream&fos&=&new&FileOuputStream(PropertiesFile);
p.store(fos,"end");楼上的大哥,你那样写入的是以下格式的内容:
而我是要写入诸如&city=北京&格式的内容,你一定是弄错了。对啊,我说的也是PropertyResourceBundle读取名值对啊我知道了,多谢大侠了zzmllg(同而)&:
PropertyResourceBundle&configBundle&=&(PropertyResourceBundle)&PropertyResourceBundle.getBundle("com.test");&
String&value&=&new&String(bundle.getString("key").getBytes("8859_1"),&"GB2312");
showmetheway(雪儿甜心)&:
雪儿甜心好像是MM呀。
其实我想你比我更肯定清楚,PropertyResourceBundle是不能够写入键值对的,只能读取。我刚才所说的就是解决问题的办法,用Properties来存储键值对,有变更时一次性写入文件,写入的格式是key=value,系统初始化的时候一次性读入Properties。但是你非要用.properties文件,PropertyResourceBundle是用不上了,你还是自己做个字符串查找替换类把。其实,问题在于如何键入
直接这样写是不行的。
需要将“北京”替换为形如“\uXXXX\uXXXX"才可以。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:您当前所在位置: >
> 编辑语言
如何利用javautilProperties读取属性文件呢
欢迎大家在这里学习利用javautilProperties读取属性文件!这里是我们给大家整理出来的精彩内容。希望大家在这里学习!比如,我们构造一个ipConfig.properties来保存服务器ip地址和端口,如:
ip=192.168.0.1
则,我们可以用如下程序来获得服务器配置信息:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(&ipConfig.properties&);
Properties p = new Properties();
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
System.out.println(&ip:&+p.getProperty(&ip&)+&,port:&+p.getProperty(&port&));
好了,利用javautilProperties读取属性文件内容就给大家介绍到这里了。希望大家继续关注我们的网站!
相关推荐:
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新java读取.properties配置文件的几种方法 -
& & & 读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):
一.通过jdk提供的java.util.Properties类
& & & & 此类继承自java.util.HashTable,即实现了Map接口,所以,可使用相应的方法来操作属性文件,但不建议使用像put、putAll这 两个方法,因为put方法不仅允许存入String类型的value,还可以存入Object类型的。因此java.util.Properties类提 供了getProperty()和setProperty()方法来操作属性文件,同时使用store或save(已过时)来保存属性值(把属性值写 入.properties配置文件)。在使用之前,还需要加载属性文件,它提供了两个方法:load和loadFromXML。
& & & & load有两个方法的重载:load(InputStream inStream)、load(Reader reader),所以,可根据不同的方式来加载属性文件。
& & & & 可根据不同的方式来获取InputStream,如:
1.通过当前类加载器的getResourceAsStream方法获取&&
Java代码&&
InputStream&inStream&=&TestProperties.class.getClassLoader().getResourceAsStream("test.properties");&&
2.从文件获取
Java代码&&
InputStream&inStream&=&new&FileInputStream(new&File("filePath"));&&
3.也是通过类加载器来获取,和第一种一样
Java代码&&
InputStream&in&=&ClassLoader.getSystemResourceAsStream("filePath");&&
4.在servlet中,还可以通过context来获取InputStream
Java代码&&
InputStream&in&=&context.getResourceAsStream("filePath");&&
5.通过URL来获取
Java代码&&
URL&url&=&new&URL("path");&&
InputStream&inStream&=&url.openStream();&&
读取方法如下:
Java代码&&
Properties&prop&=&new&Properties();&&&&
prop.load(inStream);&&&&
String&key&=&prop.getProperty("username");&&&&
二.通过java.util.ResourceBundle类读取
& & & & 这种方式比使用Properties要方便一些。
1.通过ResourceBundle.getBundle()静态方法来获取
& & & & ResourceBundle是一个抽象类,这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可。
Java代码&&
ResourceBundle&resource&=&ResourceBundle.getBundle("com/mmq/test");&&
String&key&=&resource.getString("username");&&
2.从InputStream中读取
& & & & 获取InputStream的方法和上面一样,不再赘述。
Java代码&&
ResourceBundle&resource&=&new&PropertyResourceBundle(inStream);&&
注意:在使用中遇到的最大的问题可能是配置文件的路径问题,如果配置文件入在当前类所在的包下,那么需要使用包名限定,
如:test.properties入在com.mmq包下,则要使用com/mmq/test.properties(通过Properties来获
取)或com/mmq/test(通过ResourceBundle来获取);属性文件在src根目录下,则直接使用test.properties && 或test即可。
ResourceLoader.java
Java代码&&
package&com.bijian.&&
import&java.io.F&&
import&java.io.FileInputS&&
import&java.util.HashM&&
import&java.util.M&&
import&java.util.P&&
public&final&class&ResourceLoader&{&&
&&&&private&static&ResourceLoader&loader&=&new&ResourceLoader();&&
&&&&private&static&Map&String,&Properties&&loaderMap&=&new&HashMap&String,&Properties&();&&
&&&&private&ResourceLoader()&{&&
&&&&public&static&ResourceLoader&getInstance()&{&&
&&&&&&&&return&&&
&&&&public&Properties&getPropFromProperties(String&fileName)&throws&Exception&{&&
&&&&&&&&&&
&&&&&&&&Properties&prop&=&loaderMap.get(fileName);&&
&&&&&&&&if&(prop&!=&null)&{&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
&&&&&&&&String&filePath&=&null;&&
&&&&&&&&String&configPath&=&System.getProperty("configurePath");&&
&&&&&&&&if&(configPath&==&null)&{&&
&&&&&&&&&&&&filePath&=&this.getClass().getClassLoader().getResource(fileName).getPath();&&
&&&&&&&&}&else&{&&
&&&&&&&&&&&&filePath&=&configPath&+&"/"&+&fileN&&
&&&&&&&&}&&
&&&&&&&&prop&=&new&Properties();&&
&&&&&&&&prop.load(new&FileInputStream(new&File(filePath)));&&
&&&&&&&&loaderMap.put(fileName,&prop);&&
&&&&&&&&return&&&
PropertiesUtil.java
Java代码&&
package&com.bijian.&&
import&java.util.P&&
import&java.util.concurrent.ConcurrentHashM&&
import&java.util.concurrent.ConcurrentM&&
public&class&PropertiesUtil&{&&
&&&&private&static&ResourceLoader&loader&=&ResourceLoader.getInstance();&&
&&&&private&static&ConcurrentMap&String,&String&&configMap&=&new&ConcurrentHashMap&String,&String&();&&
&&&&private&static&final&String&DEFAULT_CONFIG_FILE&=&"test.properties";&&
&&&&private&static&Properties&prop&=&null;&&
&&&&public&static&String&getStringByKey(String&key,&String&propName)&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&prop&=&loader.getPropFromProperties(propName);&&
&&&&&&&&}&catch&(Exception&e)&{&&
&&&&&&&&&&&&throw&new&RuntimeException(e);&&
&&&&&&&&}&&
&&&&&&&&key&=&key.trim();&&
&&&&&&&&if&(!configMap.containsKey(key))&{&&
&&&&&&&&&&&&if&(prop.getProperty(key)&!=&null)&{&&
&&&&&&&&&&&&&&&&configMap.put(key,&prop.getProperty(key));&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&return&configMap.get(key);&&
&&&&public&static&String&getStringByKey(String&key)&{&&
&&&&&&&&return&getStringByKey(key,&DEFAULT_CONFIG_FILE);&&
&&&&public&static&Properties&getProperties()&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&return&loader.getPropFromProperties(DEFAULT_CONFIG_FILE);&&
&&&&&&&&}&catch&(Exception&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&&&&&return&null;&&
&&&&&&&&}&&
Constant.java
Java代码&&
package&com.bijian.&&
public&class&Constant&{&&
&&&&public&static&final&String&TEST&=&PropertiesUtil.getStringByKey("test",&"test.properties");&&
Java代码&&
package&com.bijian.&&
public&class&Main&{&&
&&&&public&static&void&main(String[]&args)&{&&
&&&&&&&&&&
&&&&&&&&System.out.println(Constant.TEST);&&

我要回帖

更多关于 gradle读取properties 的文章

 

随机推荐