溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java怎么操作Properties配置文件

發(fā)布時(shí)間:2020-08-01 09:06:02 來源:億速云 閱讀:233 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了Java怎么操作Properties配置文件,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

java中的properties文件是一種配置文件,主要用于表達(dá)配置信息,文件類型為*.properties,格式為文本文件,文件的內(nèi)容是格式是"鍵=值"的格式,在properties

文件中,可以用"#"來作注釋,properties文件在Java編程中用到的地方很多,操作很方便。

一、properties文件

test.properties
------------------------------------------------------
#################################
# 工商報(bào)表應(yīng)用IcisReport的配置文件#
# 日期:2006年11月21日 #
#################################
#
# 說明:業(yè)務(wù)系統(tǒng)TopIcis和報(bào)表系統(tǒng)IcisReport是分離的
# 可分開部署到不同的服務(wù)器上,也可以部署到同一個(gè)服務(wù)
# 器上;IcisReprot作為獨(dú)立的web應(yīng)用程序可以使用任何
# 的Servlet容器或者J2EE服務(wù)器部署并單獨(dú)運(yùn)行,也可以
# 通過業(yè)務(wù)系統(tǒng)的接口調(diào)用作為業(yè)務(wù)系統(tǒng)的一個(gè)庫來應(yīng)用.
#
# IcisReport的ip
IcisReport.server.ip=192.168.3.143
# IcisReport的端口
IcisReport.server.port=8080
# IcisReport的上下文路徑
IcisReport.contextPath=/IcisReport

------------------------------------------------------

Properties類的重要方法

Properties類存在于胞Java.util 中,該類繼承自 Hashtable
1. getProperty ( String key) , 用指定的鍵在此屬性列表中搜索屬性。也就是通過參數(shù) key ,得到 key 所對應(yīng)的 value。
2. load ( InputStream inStream) ,從輸入流中讀取屬性列表(鍵和元素對)。通過對指定的文件(比如說上面的 test.properties文件)進(jìn)行裝載來獲取該文

件中的所有鍵 - 值對。以供 getProperty ( String key) 來搜索。
3. setProperty ( String key, String value) ,調(diào)用 Hashtable 的方法 put 。他通過調(diào)用基類的put方法來設(shè)置 鍵 - 值對。
4. store ( OutputStream out, String comments) , 以適合使用 load 方法加載到Properties表中的格式,將此Properties表中的屬性列表(鍵和元素

對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的文件中去。
5. clear () ,清除所有裝載的 鍵 - 值對。該方法在基類中提供。
-------------------------------

二、操作properties文件的java方法

讀屬性文件
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("/IcisReport.properties");
prop.load(in);
Set keyValue = prop.keySet();
for (Iterator it = keyValue.iterator(); it.hasNext();)
{
String key = (String) it.next();
}
------------------------
outputFile = new FileOutputStream(fileName);
propertie.store(outputFile, description);
outputFile.close();
-----------------------------------------------------------------------------------------
Class.getResourceAsStream ("/some/pkg/resource.properties");
ClassLoader.getResourceAsStream ("some/pkg/resource.properties");
java.util.ResourceBundle rs = java.util.ResourceBundle.getBundle("some.pkg.resource");
rs.getString("xiaofei");
-----------------------------------------------------------------------------------------
寫屬性文件
Configuration saveCf = new Configuration();
saveCf.setValue("min", "10");
saveCf.setValue("max", "1000");
saveCf.saveFile(".\config\save.perperties","test");

總結(jié):java的properties文件需要放到classpath下面,這樣程序才能讀取到,有關(guān)classpath實(shí)際上就是java類或者庫的存放路徑,在java工程中,properties放到class文件一塊。在web應(yīng)用中,最簡單的方法是放到web應(yīng)用的WEB- INF\classes目錄下即可,也可以放在其他文件夾下面,這時(shí)候需要在設(shè)置classpath環(huán)境變量的時(shí)候,將這個(gè)文件夾路徑加到 classpath變量中,這樣也也可以讀取到。在此,你需要對classpath有個(gè)深刻理解,classpath絕非系統(tǒng)中刻意設(shè)定的那個(gè)系統(tǒng)環(huán)境變量,WEB-INF\classes其實(shí)也是,java工程的class文件目錄也是。

發(fā)個(gè)例子大家自己看哈.

package control;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;

public class TestMain {
 
 //根據(jù)key讀取value
 public static String readValue(String filePath,String key) {
 Properties props = new Properties();
    try {
     InputStream in = new BufferedInputStream (new FileInputStream(filePath));
     props.load(in);
     String value = props.getProperty (key);
      System.out.println(key+value);
      return value;
    } catch (Exception e) {
     e.printStackTrace();
     return null;
    }
 }
 
 //讀取properties的全部信息
  public static void readProperties(String filePath) {
   Properties props = new Properties();
    try {
     InputStream in = new BufferedInputStream (new FileInputStream(filePath));
     props.load(in);
      Enumeration en = props.propertyNames();
       while (en.hasMoreElements()) {
       String key = (String) en.nextElement();
          String Property = props.getProperty (key);
          System.out.println(key+Property);
        }
    } catch (Exception e) {
     e.printStackTrace();
    }
  }

  //寫入properties信息
  public static void writeProperties(String filePath,String parameterName,String parameterValue) {
   Properties prop = new Properties();
   try {
   InputStream fis = new FileInputStream(filePath);
      //從輸入流中讀取屬性列表(鍵和元素對)
      prop.load(fis);
      //調(diào)用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
      //強(qiáng)制要求為屬性的鍵和值使用字符串。返回值是 Hashtable 調(diào)用 put 的結(jié)果。
      OutputStream fos = new FileOutputStream(filePath);
      prop.setProperty(parameterName, parameterValue);
      //以適合使用 load 方法加載到 Properties 表中的格式,
      //將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流
      prop.store(fos, "Update '" + parameterName + "' value");
    } catch (IOException e) {
     System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
    }
  }

  public static void main(String[] args) {
   readValue("info.properties","url");
    writeProperties("info.properties","age","21");
    readProperties("info.properties" );
    System.out.println("OK");
  }

發(fā)個(gè)例子大家自己看哈.

package control;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;

public class TestMain {
 
 //根據(jù)key讀取value
 public static String readValue(String filePath,String key) {
 Properties props = new Properties();
    try {
     InputStream in = new BufferedInputStream (new FileInputStream(filePath));
     props.load(in);
     String value = props.getProperty (key);
      System.out.println(key+value);
      return value;
    } catch (Exception e) {
     e.printStackTrace();
     return null;
    }
 }
 
 //讀取properties的全部信息
  public static void readProperties(String filePath) {
   Properties props = new Properties();
    try {
     InputStream in = new BufferedInputStream (new FileInputStream(filePath));
     props.load(in);
      Enumeration en = props.propertyNames();
       while (en.hasMoreElements()) {
       String key = (String) en.nextElement();
          String Property = props.getProperty (key);
          System.out.println(key+Property);
        }
    } catch (Exception e) {
     e.printStackTrace();
    }
  }

  //寫入properties信息
  public static void writeProperties(String filePath,String parameterName,String parameterValue) {
   Properties prop = new Properties();
   try {
   InputStream fis = new FileInputStream(filePath);
      //從輸入流中讀取屬性列表(鍵和元素對)
      prop.load(fis);
      //調(diào)用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
      //強(qiáng)制要求為屬性的鍵和值使用字符串。返回值是 Hashtable 調(diào)用 put 的結(jié)果。
      OutputStream fos = new FileOutputStream(filePath);
      prop.setProperty(parameterName, parameterValue);
      //以適合使用 load 方法加載到 Properties 表中的格式,
      //將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流
      prop.store(fos, "Update '" + parameterName + "' value");
    } catch (IOException e) {
     System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
    }
  }

  public static void main(String[] args) {
   readValue("info.properties","url");
    writeProperties("info.properties","age","21");
    readProperties("info.properties" );
    System.out.println("OK");
  }
}

以上就是關(guān)于Java怎么操作Properties配置文件的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI