Java读写Properties配置文件

我们都知道在编程时,有些参数是不固定的,比如服务器地址,数据库名字等,像这种参数通常要做个配置文件,这样就可以很简单的修改设置了。配置文件可以用xml,ini,Properties等。Java中没有直接提供专门来读写INI文件的类,Java支持的是.properties文件的读写。JDK内置的 Java.util.Properties 类为我们操作 .properties文件提供了便利。 

1、JDK中的Properties类 Properties 类存在于包Java.util中,该类继承自Hashtable。它提供了几个主要的方法: 
(1)、load (InputStream inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键-值对。以供getProperty(String key)来搜索。 
(2)、getProperty(String key),用指定的键在此属性列表中搜索属性。也就是通过参数key,得到key所对应的value。 
(3)、setProperty(String key,String value),调用Hashtable的方法put 。他通过调用基类的put方法来设置 键-值对。 
(4)、store(OutputStream out,String comments),以适合使用load方法加载到 Properties 表中的格式,将此 Properties表中的属性列表(键和元素对)写入输出流。与load方法相反,该方法将键-值对写入到指定的文件中去。 
(5)、clear() ,清除所有装载的键-值对。该方法在基类中提供。 
2、.properties文件的形式(也可以更改为.ini): 

#以下为服务器、数据库信息 
server = localhost 
database = mydb 
dbuser = root 
dbpw = 123456 
#其它信息等 

   注:#开始的一行为注释信息 

以下是一个Properties用法实例: 

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.ObjectInputStream.GetField; 
import java.util.Properties; 
import java.util.TreeMap; 

public class OFile { 

//指定文件路径及文件名 
private static  String fileName = "c:/aa.ini"; 
private static  Properties props=new Properties(); 
private static  InputStream inputFile; 
private static  FileOutputStream outputFile;   

/** 
  * 根据Key 读取Value 
  * @param key 
  * @return 
  */ 
public static String readKey(String key) { 
  String value=""; 
  try { 
   inputFile= new BufferedInputStream(new FileInputStream(fileName)); 
   props.load(inputFile); 
   inputFile.close(); 
   value = props.getProperty(key); 
  } catch (Exception e) { 
   e.printStackTrace(); 
  } 
  return value; 


public static void setKey(String key, String value){ 
  props.setProperty(key, value); 


/** 
  * 修改或添加键值对 如果key存在,修改否则添加。 
  * @param key 
  * @param value 
  */ 
public static void saveKey(String comment) { 
  try { 
   File file = new File(fileName); 
   if (!file.exists()) 
    file.createNewFile(); 
   outputFile = new FileOutputStream(fileName); 
   props.store(outputFile, comment); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  }finally{ 
   try { 
    outputFile.close(); 
   } catch (IOException e) { 
   } 
  } 


public static void main(String[] args){ 
  //读取信息 
  String server=readKey("server"); 
  String mydb=readKey("database"); 
  System.out.println(server); 
  System.out.println(mydb); 

  //写入信息 
  setKey("dbuser", "freezq"); 
  setKey("test", "aaabbbcc"); 
  saveKey("test sava"); 



用Properties读写配置文件的确很方便简单,但它跟HashMap是一样的无序,写入的顺序是乱的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值