`
yeshaoting
  • 浏览: 685824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转载]使用JAVA读写Properties属性文件

    博客分类:
  • J2SE
 
阅读更多


Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件。它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文本文件来保存,如果是通过File直接保存的话,可能在存储和读取上都不是很方便,但如果保存为Properties文件就不一样了,属性文件都有键值对应的,在JAVA的包中,有提供专门的操作属性文件的类。这个类就是 java.uitl.Properties类,由于Properties类是一个集合类,所以,Properties会将属性以集合的方式读写。 

注意:下面的代码中对于抛出的异常都未采取捕获的方式,自己在编写程序的时候一定要注意捕获异常,推荐将捕获的异常处理掉。 

Properties类继承字Hashtable类,采用键值对应的存储方式,在使用Properties类管理属性文件时有什么方便的呢?Properties类有专门的读写方法来读写Properties属性文件,不用担心读写的格式问题,只要为Properties类提供一个读写流即可。Properties用于读写属性文件的方法分别是: 
  

Java代码  收藏代码
  1. //读取属性文件流的方法   
  2.    public void load(InputStream inStream) throws IOException {}   
  3.    //写属性文件流的方法   
  4.    public void store(OutputStream out, String comments) throws IOException {}   

首先,我们来看看如何从一个属性文件中读取属性。 

假定我们已经新建了一个属性文件,名为prop.properties,内容如下: 

  
Java代码  收藏代码
  1. sitename=abcjava   
  2.    siteurl=www.abcjava.com   


我们要做的第一步就是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们就用FileInputStream(String name)构造函数: 

  
Java代码  收藏代码
  1. Properties prop = new Properties();//属性集合对象   
  2.    FileInputStream fis = new FileInputStream("prop.properties");//属性文件流   
  3.    prop.load(fis);//将属性文件流装载到Properties对象中   




接下来我们将做的事情就是如果读取一个属性,因为属性文件中的每一行都是一个键值对应,所以每一行都代表了一个属性对象,每一行都将以键和值的关系存储到Properties中,Properties类提供了getProperty(String key)方法用来通过键名读取键值,当key在属性集合中找不到时又想为key在程序中赋予一个值时可以使用public String getProperty(String key, String defaultValue)方法,这个方法的意思就是用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回默认值变量: 

  
Java代码  收藏代码
  1. //获取属性值,sitename已在文件中定义   
  2.    System.out.println("获取属性值:sitename=" + prop.getProperty("sitename"));   
  3.    //获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件   
  4.    System.out.println("获取属性值:country=" + prop.getProperty("country""中国"));   




在知道怎么读取属性文件之后我们还有一个很重要的事情就是要修改和添加新的属性到属性文件,这里就是使用public void store(OutputStream out, String comments)方法,这个方法是将属性集合写到一个OutputStream流中,同InputStream流一样,这里同样是使用其子类 FileOutputStream(String name),这里就不多说了。 

在保存属性集合到文件之前,我们还有一件事情就是如何修改和添加新的属性到属性集合,这里使用了一个方法就是setProperty(String key, String value),这个方法就是当属性集合中存在指定的key时,就修改这个key的值,如果不存在,就新建一个key,同样是通过键值关系保存的,但值得注意的是,Properties类继承自Hashtable,所以也可以用Hashtable的put和putAll方法保存,但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。那好,下面我们就来看看修改、添加和保存属性的程序: 

//修改sitename的属性值 
prop.setProperty("sitename", "Boxcode"); 
//添加一个新的属性studio 
prop.setProperty("studio", "Boxcode Studio"); 
//文件输出流 
FileOutputStream fos = new FileOutputStream("prop.properties"); 
//将Properties集合保存到流中 
prop.store(fos, "Copyright (c) Boxcode Studio"); 
fos.close();//关闭流 



接下就是整个程序的源代码: 

Java代码  收藏代码
  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.util.Properties;  
  4.   
  5. public class PropertyEditor {  
  6.     public static void main(String[] args) throws Exception {  
  7.         Properties prop = new Properties();// 属性集合对象  
  8.         FileInputStream fis = new FileInputStream("prop.properties");// 属性文件输入流  
  9.         prop.load(fis);// 将属性文件流装载到Properties对象中  
  10.         fis.close();// 关闭流  
  11.   
  12.         // 获取属性值,sitename已在文件中定义  
  13.         System.out.println("获取属性值:sitename=" + prop.getProperty("sitename"));  
  14.         // 获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件  
  15.         System.out.println("获取属性值:country=" + prop.getProperty("country""中国"));  
  16.   
  17.         // 修改sitename的属性值  
  18.         prop.setProperty("sitename""Boxcode");  
  19.         // 添加一个新的属性studio  
  20.         prop.setProperty("studio""Boxcode Studio");  
  21.         // 文件输出流  
  22.         FileOutputStream fos = new FileOutputStream("prop.properties");  
  23.         // 将Properties集合保存到流中  
  24.         prop.store(fos, "Copyright (c) Boxcode Studio");  
  25.         fos.close();// 关闭流  
  26.     }  
  27. }  




在我们知道如何读写一个属性文件之后,我们仍然还有很多需要注意的问题,因为load和store方法都是按照ISO-8859-1的编码方式读写属性流文件的,而ILatin1 的字符和某些特殊字符,而对于非Latin1 的字符和某些特殊字符,则要使用与字符和字符串字面值所用的类似转义序列,以值和元素的形式来表示它们。所以当我们在处理中文时,不可以在直接修改属性文件时,将中文的值赋予给属性,而是要在JAVA程序中通过setProperty方法给属性赋予中文的值,因为这样store会将中文转换成 unicode码,在读取时系统会将读取到的unicode码按系统的编码打印出来,对于中文系统,通常是GBK码,这样中文才能够正常显示。


http://alex09.iteye.com/blog/510056

分享到:
评论

相关推荐

    java读写properties配置文件

    通过上述介绍,我们可以看到使用Java读写`Properties`配置文件是非常直观和方便的。这种能力对于开发过程中管理和维护配置信息至关重要。无论是简单的键值对读取还是复杂的批量更新,`Properties`类都能满足需求。...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    1. 相对类路径:如果你的Properties文件与Java源代码位于同一目录结构下,可以使用`getResourceAsStream()`方法,配合类路径来加载。例如: ```java InputStream in = getClass().getResourceAsStream("/config....

    java对properties配置文件的读和写

    在Java编程中,`properties`文件是用于存储应用程序配置信息的一种简单文本格式。这些文件通常包含键值对,其中键和值之间用等号或冒号分隔。本篇文章将详细探讨如何在Java中读取、写入、修改以及删除`properties`...

    Java源码读写Properties文件.rar

    这个压缩包“Java源码读写Properties文件.rar”包含了一份关于如何使用Java来读取和写入Properties文件的源代码示例。下面我们将详细探讨这个主题。 首先,Properties类是Java的标准库类,位于`java.util`包下,它...

    java 改变Properties文件中的键值

    在Java代码中,首先需要导入`java.util.Properties`和`java.io.*`等相关的类库,以便进行读写Properties文件的操作。 2. **加载Properties文件** 使用`Properties`类的`load()`方法加载Properties文件。这个方法...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...

    java读写xxx.properties文件实用小例

    在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...

    Python实现读取Properties配置文件的方法

    在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...

    java读取properties配置文件

    在Java中,我们可以使用`java.util.Properties`类来加载和操作这类文件。以下是读取`properties`文件的基本步骤: 1. 加载`properties`文件: - 创建`Properties`对象实例:`Properties prop = new Properties();`...

    java读取属性文件

    在Java编程中,属性文件(通常以`.properties`为扩展名)是一种常见的配置文件类型,用于存储应用程序的配置参数和设置。这些文件以键值对的形式组织,键和值之间用等号`=`或冒号`:`分隔。在本教程中,我们将深入...

    使用java读写properties文件属性

    自己定义一个属性文件:例如prop.properties  baseFilePath=D:/kuanter/resource  tesx=abcd  我们要做的第一步是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 ...

    java中读写Properties属性文件公用方法详解

    以下是对Java中读写Properties属性文件公用方法的详细解释: 1. `getProperty(String key)`:这个方法用于根据给定的键`key`查找并返回对应的值。如果找不到匹配的键,将会返回`null`。例如,如果我们有一个键`...

    使用Java实现对dbf文件的简单读写

    使用 Java 实现对 dbf 文件的简单读写 Java 是一种广泛使用的编程语言,对于读写 dbf 文件具有重要的应用价值。本文将介绍使用 Java 实现对 dbf 文件的简单读写,包括读写 dbf 文件的基本步骤、相关类的介绍、代码...

    properties文件读写

    properties文件读写操作

    java读写hdf5格式文件需要使用的库

    标题提及的“java读写hdf5格式文件需要使用的库”主要包括两个部分:Java接口库和操作系统特定的动态链接库。这里提供的jar文件`hdf5-3.3.2.jar`是Java接口库,它封装了对HDF5文件的操作,使得Java程序员可以通过...

    Java 读写文件文本文件的示例

    Java中读写文本文件主要依赖于`InputStream`和`OutputStream`的使用,结合`Reader`和`Writer`接口的实现类如`BufferedReader`和`PrintWriter`,可以高效地完成文件的读取和写入操作。掌握这些核心类的使用是进行文件...

    java读取properties文件

    这个类提供了一种存储和加载属性列表的方法,它能够处理`.properties`文件的读写操作。 1. 加载`properties`文件: 要读取`properties`文件,我们首先需要创建一个`Properties`对象,然后使用`load()`方法从输入流...

    JAVA读取properties文件的值

    它允许将整个文件映射到一个Java类,简化了属性的使用: ```java @ConfigurationProperties(prefix = "database") public class DatabaseConfig { private String name; private String url; // getters and ...

    Java 读写Properties配置文件详解

    Properties类继承了Hashtable类,并且实现了Map接口,这意味着它可以像Map一样操作,同时也具备了处理文本属性文件的能力。 ### 1. Properties类与Properties配置文件 Properties类主要用于读取和写入.properties...

    java操作properties方法

    1. **预处理**:在编辑`.properties`文件时,可以使用Java提供的`native2ascii`工具或Eclipse的属性编辑器将中文字符转换为对应的UTF-8编码表示形式。 2. **程序中转换**:在代码中,可以使用`new String...

Global site tag (gtag.js) - Google Analytics