java资源文件获取属性_Java读写资源文件类Properties

Java中读写资源文件最重要的类是Properties

1) 资源文件要求如下:

1、properties文件是一个文本文件

2、properties文件的语法有两种,一种是注释,一种属性配置。

注    释:前面加上#号

属性配置:以“键=值”的方式书写一个属性的配置信息。

3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。

4、properties的属性配置键值前后的空格在解析时候会被忽略。

5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。

eg:

正确的资源文件格式为:

a9f4657783e6b0dab125d2593833c023.png

2) 功能大致如下:

1. 读写Properties文件

2. 读写XML文件

3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要符合key=value格式即可.

Properties能读取以key,value存储的任何格式文件,看一下他的类结构就知道为什么了

13183b409d1d45df39425cde760d5879.png

从上面的类结构图可以看出,它继承了Hashtable并实现了Map接口

3)代码演示:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.ifly.myhome.test;2

3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.io.OutputStream;9 importjava.io.UnsupportedEncodingException;10 importjava.util.Properties;11

12 public classPropertiesMyTest13 {14

15 public static voidmain(String[] args)16 {17

18 String readfile = "e:" + File.separator + "readfile.properties";19 String writefile = "e:" + File.separator + "writefile.properties";20 String readxmlfile = "e:" + File.separator + "readxmlfile.xml";21 String writexmlfile = "e:" + File.separator + "writexmlfile.xml";22 String readtxtfile = "e:" + File.separator + "readtxtfile.txt";23 String writetxtfile = "e:" + File.separator + "writetxtfile.txt";24

25 readPropertiesFile(readfile); //读取properties文件

26 writePropertiesFile(writefile); //写properties文件

27 readPropertiesFileFromXML(readxmlfile); //读取XML文件

28 writePropertiesFileToXML(writexmlfile); //写XML文件

29 readPropertiesFile(readtxtfile); //读取txt文件

30 writePropertiesFile(writetxtfile); //写txt文件

31 }32

33 //读取资源文件,并处理中文乱码

34 public static voidreadPropertiesFile(String filename)35 {36 Properties properties = newProperties();37 try

38 {39 InputStream inputStream = newFileInputStream(filename);40 properties.load(inputStream);41 inputStream.close(); //关闭流

42 }43 catch(IOException e)44 {45 e.printStackTrace();46 }47 String username = properties.getProperty("username");48 String passsword = properties.getProperty("password");49 String chinese = properties.getProperty("chinese");50 try

51 {52 chinese = new String(chinese.getBytes("ISO-8859-1"), "GBK"); //处理中文乱码

53 }54 catch(UnsupportedEncodingException e)55 {56 e.printStackTrace();57 }58 System.out.println(username);59 System.out.println(passsword);60 System.out.println(chinese);61 }62

63 //读取XML文件,并处理中文乱码

64 public static voidreadPropertiesFileFromXML(String filename)65 {66 Properties properties = newProperties();67 try

68 {69 InputStream inputStream = newFileInputStream(filename);70 properties.loadFromXML(inputStream);71 inputStream.close();72 }73 catch(IOException e)74 {75 e.printStackTrace();76 }77 String username = properties.getProperty("username");78 String passsword = properties.getProperty("password");79 String chinese = properties.getProperty("chinese"); //XML中的中文不用处理乱码,正常显示

80 System.out.println(username);81 System.out.println(passsword);82 System.out.println(chinese);83 }84

85 //写资源文件,含中文

86 public static voidwritePropertiesFile(String filename)87 {88 Properties properties = newProperties();89 try

90 {91 OutputStream outputStream = newFileOutputStream(filename);92 properties.setProperty("username", "myname");93 properties.setProperty("password", "mypassword");94 properties.setProperty("chinese", "中文");95 properties.store(outputStream, "author: shixing_11@sina.com");96 outputStream.close();97 }98 catch(IOException e)99 {100 e.printStackTrace();101 }102 }103

104 //写资源文件到XML文件,含中文

105 public static voidwritePropertiesFileToXML(String filename)106 {107 Properties properties = newProperties();108 try

109 {110 OutputStream outputStream = newFileOutputStream(filename);111 properties.setProperty("username", "myname");112 properties.setProperty("password", "mypassword");113 properties.setProperty("chinese", "中文");114 properties.storeToXML(outputStream, "author: shixing_11@sina.com");115 outputStream.close();116 }117 catch(IOException e)118 {119 e.printStackTrace();120 }121 }122

123 }

View Code

运行本程序所需的资源文件,我是放在E盘根目录,如E:/readfile.properties

1. readfile.properties

username=kh

password=kh

chinese=谓语

2. writefile.properties

#author: shixing_11@sina.com

#Fri May 28 22:19:44 CST 2010

password=kh

chinese=\u8C13\u8BED

username=kh

3. readxmlfile.xml

mypassword

中文

myname

4. writexmlfile.xml

kh

中文

kh

5. readtxtfile.txt

username=kh

password=kh

chinese=中文

6. writetxtfile.txt

password=kh

chinese=/u4E2D/u6587

username=kh

4)Properties获取数据乱码解决

1.原因

Properties调用load(InputStream)时,读取文件时使用的默认编码为ISO-8859-1;当我们讲中文放入到properties文件中,通过getProperty(key)获取值时,取到得数据是ISO-8859-1格式的,但是ISO-8859-1是不能识别中文的。

2.解决方法

通过getProperty()获取的数据data既然是ISO-8859-1编码的,就通过data.getByte(“iso-8859-1”)获取获取,使用new String(data.getByte(“iso-8859-1”),”UTF-8”)进行转换。当然properties文件的编码类型需要和new String(Byte[],charst)中的第二个参数的编码类型相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java被放弃了_为什么学Java那么容易放弃?

学习Java确实很容易就放弃,但是也很容易就学好,因为大多数人都是抱着试一试的心态,然后当后面就坚持不下去但是回过头来想一想,打游戏上分容易吗,一样是磕磕碰碰的,有时候十几连跪都不会放弃你上分的心情。…

python 隐马尔科夫_机器学习算法之——隐马尔可夫(Hidden Markov ModelsHMM)原理及Python实现...

前言上星期写了Kaggle竞赛的详细介绍及入门指导,但对于真正想要玩这个竞赛的伙伴,机器学习中的相关算法是必不可少的,即使是你不想获得名次和奖牌。那么,从本周开始,我将介绍在Kaggle比赛中的最基本的也是运用最广的机…

java编程50_java经典50编程题(1-10)

1.有一对兔子从出生后第三个月起,每个月都生一对小兔子,小兔子长到三个月后每个月又生一对兔子,假设兔子不死亡,问每个月兔子的总数为多少?分析过程图片发自简书App示例代码图片发自简书App运行结果图片发自简书App反思…

python替代hadoop_Python连接Hadoop数据中遇到的各种坑(汇总)

最近准备使用PythonHadoopPandas进行一些深度的分析与机器学习相关工作。(当然随着学习过程的进展,现在准备使用PythonSparkHadoop这样一套体系来搭建后续的工作环境),当然这是后话。但是这项工作首要条件就是将Python与Hadoop进行打通,本来认…

java 自动化测试_java写一个自动化测试

你模仿购物车试一下,同样是买东西,加上胜负平的赔率,输出改下应该就可以了package com.homework.lhh;import java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;public class Ex04 {public static void main(String…

超大规模集成电路_纳米级超大规模集成电路芯片低功耗物理设计分析(二)

文 | 大顺简要介绍了功耗的组成,在此基础上从工艺、电路、门、系统四个层面探讨了纳米级超大规模集成电路的低功耗物理设计方法。关键词:纳米级;超大规模集成电路;电路芯片;电路设计02纳米级超大规模集成电路芯片低功耗…

java中的printnb_javaI/O系统笔记

1、File类File类的名字有一定的误导性;我们可能认为它指代的是文件,实际上却并非如此。它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。1.1、目录列表器如果需要查看目录列表,可以通过file.list(FilenameFilt…

outlook反应慢的原因_保险管怎么区分慢熔和快熔?

保险丝快熔与慢熔的区别所有双帽;对于这样的产品特性和安全性熔丝; gG的”,即,与接触帽组合接触;即,所述双(内/外盖)的盖。和一般的小型或地下加工厂,以便执行切割角,降低生产成本,这将选择单个帽铆接“单&…

java成员内部类_Java中的内部类(二)成员内部类

Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点public classOuter {//定义一个实例变量和一个静态变量private inta;private static intb;//定义一个静态方法和一个非静态方法public static voidsay(…

word 通配符_学会Word通配符,可以帮助我们批量处理好多事情

长文档需要批量修改或删除某些内容的时候,我们可以利用Word中的通配符来搞定这一切,当然,前提是你必须会使用它。通配符的功能非常强大,能够随意组合替换或删除我们定义的规则内容,下面易老师就分享一些关于查找替换通…

java存储键值结构_java-键值存储为主数据库

我将要开始一个项目,该项目的读写操作非常频繁且频繁.因此,环顾四周,我发现内存数据库正是为此目的而创建的.经过更多调查后,我进入了redis.Redis看起来很酷(虽然刚开始阅读,但是对此有很多了解).但是我主要只看过关系数据库,并且以元组和关系的方式来考虑数据(我认为我可以随着…

python 输入文件名查找_python 查找文件名包含指定字符串的方法

编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径。import osclass searchfile(object):def __init__(self,path.):self._pathpathself.abspathos.path.abspath(self._path) # 默认当前目录def fin…

java 运行 出现选择_Eclipse 运行出现java.lang.NoClassDefFoundError的解决方法

上篇博文也提到了这个问题,但没有深入的讲解。这次特意做了整理,详细解释其原因。先看错误java.lang.NoClassDefFoundError,显然是java虚拟机找不到指定的类,多数情况下是外部jar中的类。Eclipse的自动化,集成化&#…

设置熄屏_刚买的手机微信收不到信息提醒耽误事情,手机到手一定要这样设置...

手机使用过程中经常会遇到第三方软件接收不到信息提醒的状况,常常因此耽误了很多重要的事情,造成损失。特别是刚换新手机或者手机刚升级系统时发生的最多。一般都觉得是手机问题,其实只是手机的系统设置出现了问题,只要跟我按照以…

java判断对称素数_SM2非对称算法的原理及实现 Java SM2的代码案例 | 一生孤注掷温柔 | 小奋斗...

SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆…

multipartfile 获取音频时长_抖音音频下载捷径:一键提取音频,安卓+ios全通用,完全免费...

本文相关:抖音音频提取、抖音音频快捷指令、捷径怎么获取抖音音乐…昨天有抖友分享了一个抖音短视频链接,告诉我,她很喜欢这个视频里的歌曲,但是在很多歌曲app上面却找不到相同的版本,然后就问我,有没有什么…

python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...

感谢邀请。首先自己要在某一方面要擅长,认准一个定位。比如android是钥匙做前端应用软件的,python可以做爬虫及其人工智能,js做全段网页,java主要是做后端的1、我们程序员对于开发软件来说,无论你选择的是那种语言&…

POJ2513-Colored Sticks

/*思路:类似图论中“一笔画”问题,两根木棒的相连接的端点是一样的颜色,(a,b)--(b,c)--(c, d)....方法:trie树并查集, 利用trie树建立字符串和某一个节点的映射,并将这些和字符串构成…

php windows共享内存,给PHP开启shmop扩展实现共享内存

这篇文章主要介绍了关于给PHP开启shmop扩展实现共享内存,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在项目开发中,想要实现PHP多个进程之间共享数据的功能,让客户端连接能够共享一个状态&#xff0c…

导入ansys的实体怎么进行parameter_ANSYS在线缆线束设计中的仿真应用

ANSYS采用ANSYS Maxwell、Q3D、Twin Builder等电磁仿真软件,从线缆线束设计、寄生参数RLCG提取、到系统电磁兼容提供了全面仿真分析。创建模型ANSYS在Maxwell软件基础上提出针对用户定制化的“线缆线束设计工具包”,帮助客户参数化建立特定几何模型&…