`
lj830723
  • 浏览: 132367 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Properties资源文件类总结

    博客分类:
  • java
 
阅读更多
平时的开发中可能会遇到对资源文件操作的情况,平时对资源文件类进行了一下总结:
1、Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。

因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。

load 和 store 方法按下面所指定的、简单的面向行的格式加载和存储属性。此格式使用 ISO 8859-1 字符编码。可以使用 Unicode 转义符来编写此编码中无法直接表示的字符;转义序列中只允许单个 'u' 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。

loadFromXML(InputStream) 和 storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
注意,导入或导出属性时不 访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个惟一标识 DTD 的字符串:
<?xml version="1.0" encoding="UTF-8"?>

    <!-- DTD for properties -->

    <!ELEMENT properties ( comment?, entry* ) >

    <!ATTLIST properties version CDATA #FIXED "1.0">

    <!ELEMENT comment (#PCDATA) >

    <!ELEMENT entry (#PCDATA) >

    <!ATTLIST entry key CDATA #REQUIRED>

    
2、以上文字摘自官方API文档,现对Properties类的几个常用方法进行介绍:
(1)String getProperty(String key)
用指定的键在此属性列表中搜索属性。如果在此属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回 null。
(2)String getProperty(String key, String defaultValue)
用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回默认值变量。
(3)void list(PrintStream out)
将属性列表输出到指定的输出流
(4)void list(PrintWriter out)
将属性列表输出到指定的输出流。
(5)void load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。
(6)Enumeration<?> propertyNames()
返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
(7)Object setProperty(String key,String value)
调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
(8)void store(OutputStream out,String comments)
以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
(9)loadFromXML(InputStream in)
将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
详细介绍请查阅相关资料。

3、以下是我总结的资源文件工具类
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Properties;

/**
 * 通用资源文件解析类.
 * Universal resource file parsing class.
 * 
 * @author Hetal
 * 
 */
 public class ReadProperties {
 private Properties pro = null;
 private InputStream in = null;
 private String proValue = "";

 /**
 * 根据资源文件所在路径和key获取value,用于获取资源文件中指定key的value值。
 * Resource files are located under the path and key for value
 *
 * @param proPath
 * @param proKey
 * @return
 */
 public String getPropertiesValue(String proPath, String proKey){
    try {
     pro = new Properties();
     in = ReadProperties.class.getResourceAsStream(proPath);
     pro.load(in);
     proValue = pro.getProperty(proKey);
    } catch (IOException e) {
     e.printStackTrace();
    }
    return proValue;
 }

 /**
 * 获取资源文件的key集合,用户获取资源文件中所有的key。
 * The key for the resource file collection
 *
 * @param proPath
 * @return
 */
 public List<String> getAllKeyList(String proPath) {
    List<String> keyList = new ArrayList<String>();
    try {
     pro = new Properties();
     in = ReadProperties.class.getResourceAsStream(proPath);
     pro.load(in);
     Enumeration<?> keyEnum = pro.propertyNames();
     while(keyEnum.hasMoreElements()){
      keyList.add(keyEnum.nextElement().toString());
     }
    } catch (IOException e) {
     e.printStackTrace();
    }
    return keyList;
 }

 /**
 * 判断传入的key在资源文件中是否已经存在
 *
 * @param proPath
 * @param proKey
 * @return
 */
 public boolean isKeyExist(String proPath, String proKey){
    boolean keyExist = false;
   
    try {
     pro = new Properties();
     in = ReadProperties.class.getResourceAsStream(proPath);
     pro.load(in);
     Enumeration<?> keyEnum = pro.propertyNames();
     while(keyEnum.hasMoreElements()){
      String existKey = keyEnum.nextElement().toString();
      if(proKey.equals(existKey)){
       keyExist = true;
       return keyExist;
      }
     }
    } catch (IOException e) {
     e.printStackTrace();
    }
   
    return keyExist;
 }
 /**
 * 用于向资源文件中写指定key和vlaue的资源信息。
 * Write to the resource file resource information
 *
 * @param proPath 资源文件路径
 * @param proKey 资源名称
 * @param proValue 资源内容
 */
 public void writeProperties(String proPath, String proKey, String proValue) throws Exception{
   
    pro = new Properties();
    in = ReadProperties.class.getResourceAsStream(proPath);
    pro.load(in);
    OutputStream outs = new FileOutputStream(proPath);
    //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
    pro.setProperty(proKey, proValue);
    //以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流
    pro.store(outs, null);
    outs.flush();
   
 }

 /**
 * 根据xml文件路径和key获取value
 * According to access xml file path and key value
 *
 * @param xmlPath xml文件路径
 * @param xmlKey 要获取的key名称
 * @return
 */
 public String getPropertiesFromXML(String xmlPath, String xmlKey){
    try {
     pro = new Properties();
     in = ReadProperties.class.getResourceAsStream(xmlPath);
     pro.loadFromXML(in);
     proValue = pro.getProperty(xmlKey);
    } catch (IOException e) {
     e.printStackTrace();
    }
    return proValue;
 }

 }
分享到:
评论

相关推荐

    android中读取properties文件

    总结来说,Android中读取`.properties`文件主要涉及`Properties`类的使用,文件的存放位置(如`assets`或`res/raw`),以及适当的错误处理和资源管理。理解这些知识点有助于开发者更高效地管理和使用配置文件。

    properties资源文件转换插件

    总结起来,"properties资源文件转换插件"是一个实用的Eclipse扩展,它简化了对.properties文件进行中文编辑和转换的过程,提升了开发效率,尤其对于处理多语言支持的项目来说,更是不可或缺的工具。开发者可以借助这...

    ResourceBundle与Properties读取maven中resources目录下的资源文件

    本文将详细介绍如何使用`ResourceBundle`和`Properties`类来读取这些资源文件。 #### 二、Properties类读取资源文件 ##### 1. Properties类与Properties配置文件 `Properties`类是Java提供的用于处理配置文件的一个...

    Properties读取资源文件经典应用

    结合上述描述,我们来看`TestProperties.java`文件,它可能包含一个示例,演示了如何在实际项目中安全地读取和使用Properties资源文件。这个文件可能包含了上述的安全检查措施,例如错误处理、资源关闭等。 总结,...

    Java语言对properties资源文件的处理

    通过以上分析,我们可以看到Java语言提供了强大的工具来处理properties资源文件,无论是通过`Properties`类还是`ResourceBundle`类。选择合适的方法取决于具体的应用场景:对于简单的键值对配置或需要保存配置更改的...

    读取properties文件返回map

    Java提供了`java.util.Properties`类来处理`properties`文件。这个类继承自`Hashtable`,所以它可以将读取到的键值对存储为`Map`对象。 3. **加载properties文件** 使用`Properties`类加载`properties`文件有两种...

    properties文件的读取

    总结,`properties`文件在Java开发中扮演着重要角色,主要用于存储和管理配置信息。通过`java.util.Properties`类,我们可以轻松地读取、修改和保存这些文件,实现程序的灵活性和可配置性。同时,对于处理国际化需求...

    java对properties配置文件的读和写

    1.1.1 创建`Properties`对象:`Properties`类是Java提供的内置类,用于处理`properties`文件中的键值对。 ```java Properties properties = new Properties(); ``` 1.1.2 打开文件并创建`FileInputStream`:使用`...

    java 读取properties文件代码

    总结,Java中读取Properties文件是通过`java.util.Properties`类来实现的,涉及的关键步骤包括加载文件、获取键值对以及处理可能的异常。这种机制在许多场景下都非常实用,如数据库连接配置、应用设置等。理解并熟练...

    java读取properties文件

    总结,Java中的`Properties`类为处理`.properties`文件提供了强大的支持。无论是简单的读取配置,还是更复杂的编码处理,都可以通过这个类轻松实现。在开发过程中,正确地读取和管理配置文件对于任何Java应用程序都...

    MyEclipse中Properties文件插件

    - MyEclipse的Properties文件插件支持资源bundle的概念,允许开发者为不同的语言创建多个Properties文件。通过在代码中使用ResourceBundle类,可以根据用户设置的语言自动加载相应的Properties文件,实现应用程序的...

    读取properties文件路径的两种方式.zip

    总结,读取`properties`文件的方法取决于文件存储的位置。当文件位于类路径内时,使用`getResourceAsStream()`;当文件位于文件系统中时,使用`java.nio.file`包提供的功能。了解这两种方式对于Java开发者来说至关...

    java 改变Properties文件中的键值

    总结来说,Java中修改Properties文件的键值涉及到使用`Properties`类的`load()`, `setProperty()`, 和 `store()`方法。在实际应用中,需要考虑异常处理和资源管理,以确保程序的稳定性和效率。通过封装这些操作到...

    读取Properties文件的六种方法

    这种方法利用了Java类加载机制,通过类的`getResourceAsStream()`方法加载位于类路径下的`Properties`文件。 **代码示例:** ```java import java.io.InputStream; import java.util.Properties; public class ...

    Java读取.properties文件

    对于大型项目,推荐使用类加载器来读取资源文件,这样可以避免因绝对路径导致的问题。这里是如何使用类加载器读取`.properties`文件的示例: ```java InputStream is = TestProperties.class.getResourceAsStream(...

    eclipse中.properties文件编辑

    6. **多语言支持**:对于国际化项目,可以轻松切换和管理不同语言的资源文件。 现在回到描述中的操作步骤,将下载的插件解压缩后,将文件放入Eclipse的`dropins`目录。`dropins`是Eclipse用来自动加载插件的目录,...

    java完美读取properties文件

    在Java编程中,`...总结来说,Java通过`java.util.Properties`类提供了方便的API来读取和操作`properties`文件。在实际开发中,我们应确保正确加载和关闭资源,以及处理可能出现的异常,从而实现“完美”读取。

    java读取.properties配置文件的几种方法

    `ResourceBundle`类主要用于国际化的资源管理,但它也可以用于读取`.properties`文件。这种方法适用于有多种语言版本的配置文件。 ```java import java.util.ResourceBundle; public class ...

    java解析读取properties文件的6中方法总结

    Java提供内置的`java.util.Properties`类来处理Properties文件。首先,我们需要加载文件内容,然后加载到Properties对象中。以下是一段示例代码: ```java Properties props = new Properties(); ...

Global site tag (gtag.js) - Google Analytics