java獲得properties屬性文件示例。本站提示廣大學習愛好者:(java獲得properties屬性文件示例)文章只能為提供參考,不一定能成為您想要的結果。以下是java獲得properties屬性文件示例正文
一個屬性列表可包括另外一個屬性列表作為它的“默許值”;假如未能在原本的屬性列表中搜刮到屬性鍵,則搜刮第二個屬性列表。
由於 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();// 封閉流
}
}