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

1) 资源文件要求如下:

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

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

注    释:前面加上#号

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

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

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

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

eg:

正确的资源文件格式为:

2) 功能大致如下:

1. 读写Properties文件

2. 读写XML文件

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

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

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

3)代码演示:

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)中的第二个参数的编码类型相同

java资源文件获取属性_Java读写资源文件类Properties相关推荐

  1. java exif 怎么获取属性_Java如何读取图片EXIF信息

    Java如何读取图片EXIF信息 大家知道Java如何读取图片属性信息吗?下面小编为大家整理了Java读取图片EXIF信息的方法,希望能帮到大家! 首先介绍一下什么是EXIF,EXIF是Exchang ...

  2. java中如何调用属性_java – 如何从属性文件导入值并在注释中使用它?

    我有一个实体类: Class.java @Entity public class Class { @Id @GeneratedValue private Long id; @NotNull @Rang ...

  3. java图片怎么定义属性_Java读写图片XMP元数据XMPMeta(自定义属性信息)

    起因 因项目需要,要求在JPG图片中添加自定义属性信息,在网上找了很久,发现大多数是读取ESIF信息,键值信息都是固定死的,不符合需求,后面找到了com.adobe.xmp类库,也没找到关于XMP数据 ...

  4. Java对dat文件内容进行查询_java读写dat文件

    Java的输入输出包括字节流.文件流和对象流等,要注意区分不同流使用的不同类.字... Java的输入输出包括字节流.文件流.对象流等,要注意区分不同流使用的不同类.字... 使用二进制 I/O 将 ...

  5. JAVA编程TXT文件_java读写txt文件的方法

    java读写txt文件的方法 发布时间:2020-06-26 15:54:02 来源:亿速云 阅读:111 作者:Leah 本篇文章为大家展示了java读写txt文件的方法,代码简明扼要并且容易理解, ...

  6. java相关的国际化步骤_Java语言资源国际化步骤

    语言资源国际化步骤: ??1. 定义资源文件(如:language),需要使用命令native2ascii命令进行转码:(native2ascii是jdk中的转码工具,在jdk的bin目录下) ??2 ...

  7. java element 获取属性_java 获取类,属性变量,方法,方法参数上注解的值等

    一:获取类上注解的值 定义注解@Target(ElementType.TYPE)用于类,接口等 @Target(ElementType.TYPE) @Retention(RetentionPolicy ...

  8. java resource file_Java 获取Resource目录下的文件解决办法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java 获取Resource目录下的 文件 有两种方式: Java代码中的类,要获取Resource资源 文件目录 下文件 绝对路径寻址 注意这个 / ...

  9. java接口构建英雄属性_Java开发学习心得(三):项目结构

    3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 图1 图2 ...

最新文章

  1. 设计模式笔记(9)---组合模式(结构型)
  2. nodeValue以及其与value的区别以及JS nodeName、nodeValue、nodeType返回类型
  3. 【v3.6.2】iNeuOS工业互联网操作系统,发布实时存储方式:实时存储、变化存储、定时存储,设备振动状态和电能状态监测驱动...
  4. Mac下svn搭建和使用方法
  5. jsp在mysql中删除数据_如何在jsp页面中删除数据库中的数据
  6. Java实现将二进制文件显示为图片(SU中的ximage)
  7. div和img之间的缝隙问题
  8. Eclipse用法和技巧六:自动生成get和set方法1
  9. mysql查询月份1到31_mysql查询今天、昨天、7天、近30天、本月、上一月 数据
  10. wps加载项的官方demo下载运行方式
  11. java后台通用权限管理系统(springboot)
  12. idea常用快捷键以及自定义快捷键
  13. 多一份感动,多一份行动[动物园的猪 发表于 2004-11-15]
  14. 【FXCG】美国加息缩表在即,人民币仍创新高
  15. tftp服务器怎么开启linux,CentOS 6.4 tftp服务器配置--使用tftp下载并启动内核
  16. 枫叶永恒 服务器维护,3月8日服务器维护公告
  17. C++小数该用什么数据类型
  18. jquery中的mouseover、mouseout 和 mouseenter 、 mouseleave的区别
  19. mac系统用键盘操作菜单栏
  20. DNS信息查询综合实验

热门文章

  1. jmeter+mysql+set_jmeter学习指南之操作 mysql 数据库
  2. KAFKA 最新版 单机安装、配置、部署(linux环境)
  3. SpringBoot2.x 整合 Ueditor
  4. 当自己犹豫时,坐下来读一读
  5. springboot整合activiti报错[processes/]不存在解决方案
  6. CentOS 7 CentOS7查看开放端口命令及开放端口号
  7. 代码版本管理 GitLab介绍
  8. 基础计算机b卷,计算机应用基础B卷.doc
  9. printf 指针地址_指针搞都不懂,好意思说自己会C语言?
  10. Python变量 - Python零基础入门教程