当前位置:  编程技术>java/j2ee

java获取properties属性文件示例

    来源: 互联网  发布时间:2014-10-31

    本文导语:  一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但不建议使用这两...

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

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

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

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

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

代码如下:

//读取属性文件流的方法

public void load(InputStream inStream) throws IOException {}

//写属性文件流的方法

public void store(OutputStream out, String comments) throws IOException {}

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

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

代码如下:

sitename=abcjava

siteurl=www.abcjava.com

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

代码如下:

Properties prop = new Properties();//属性集合对象

FileInputStream fis = new FileInputStream("prop.properties");//属性文件流

prop.load(fis);//将属性文件流装载到Properties对象中

在知道怎么读取属性文件之后我们还有一个很重要的事情就是要修改和添加新的属性到属性文件,这里就是使用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();//关闭流

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

代码如下:

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.Properties;

public class PropertyEditor {

public static void main(String[] args) throws Exception {

Properties prop = new Properties();// 属性集合对象

FileInputStream fis = new FileInputStream("prop.properties");// 属性文件输入流

prop.load(fis);// 将属性文件流装载到Properties对象中

fis.close();// 关闭流

// 获取属性值,sitename已在文件中定义

System.out.println("获取属性值:sitename=" + prop.getProperty("sitename"));

// 获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件

System.out.println("获取属性值:country=" + prop.getProperty("country", "中国"));

// 修改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();// 关闭流


}


    
 
 

您可能感兴趣的文章:

  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • java Servlet实现Session创建存取以及url重写代码示例
  • java 四舍五入使java保留2位小数示例讲解
  • java进行error捕获和处理示例(java异常捕获)
  • java去除集合中重复元素示例分享 java去除重复
  • java读取csv文件示例分享(java解析csv文件)
  • java求三个数的最大值的示例分享
  • java生成字母数字组合的随机数示例 java生成随机数
  • java实现网页解析示例
  • java协变返回类型使用示例
  • 使用java执行定时任务示例
  • php iis7站长之家
  • java向文件末尾添加内容示例分享
  • java正则表达式获取url的host示例
  • java使用正则表达校验手机号码示例(手机号码正则)
  • java实现jframe透明窗体示例
  • java的split方法使用示例
  • java抓取网页数据示例
  • Oracle 使用Java Source 简单示例
  • java自定义日期转化类示例
  • java命名空间java.util类properties的类成员方法: properties定义及介绍
  • 如何用java读.properties文件中的配置信息
  • java命名空间java.util类properties的类成员方法: defaults定义及介绍
  • 请教用java从properties文件中读取属性字段的方法?
  • java命名空间java.util类resourcebundle.control的类成员方法: format_properties定义及介绍
  • java遍历properties文件操作指南
  • java命名空间javax.swing类jinternalframe的类成员方法: title_property定义及介绍
  • SuseLinux下java读取一个properties文件的问题
  • java命名空间javax.xml.ws接口bindingprovider成员方法: password_property定义参考
  • Java国际化时怎么不能正确读取.properties文件中的中文字符串,如何解决其中的中文问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java 框架Hibernate的generator属性的七种class介绍
  • 急!急!急!急!急!急!急!关于ant一个属性怎么也解决不了,关于java编译的属性,在线等待!!
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • 菜鸟问题:在Java中对Label或是TextArea、TextField能不能设置自动换行属性??
  • 笨苯问题:java类中如何读取xml中定义的属性信息。
  • 突然记起来了!!哪里有java类库的树形图,及属性,方法的具体描述,这种东西哪里有?/
  • 重分悬赏!!!哪儿有关于JAVA,JSP的各种对象,方法,属性的详细的中文参考书下载.(140分,分批给)
  • 用java swing JTable做一个属性编辑器遇到的问题,请高手赐教!急,急!!
  • 请问如何在Java中调用一个VB所写的DLL?如何调用这个Dll的方法?如何取得和设置这个Dll的属性值?谢谢!
  • 在java中怎么连接MSSQL这样的数据库?database的属性里用什么驱动?
  • visualage for java 3.0 有没有象VB,jb的哪种键入"。"后提示相关属性和方法的功能?如果有应如何设?
  • java的基本数据类型及属性
  • JAVA读取属性文件的几种方法总结
  • 难!!!在jsp文件的java代码片段中控制该网页上DIV的属性以达到隐藏或显示某div的目的???
  • 有没有一种工具可以让java自动调出类的方法、成员?就像Delphi一样,写完Edit1.系统会跳出一些TEdit的属性、方法。
  • java从list中取出对象并获得其属性值的方法
  • 在java中如何查看和获取系统的属性?
  • Java 采用反射获取class属性值的实现代码
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3