Java實(shí)現(xiàn)讀取和寫(xiě)入properties文件
Java讀取和寫(xiě)入properties文件
properties文件是一種屬性文件,這種文件以key=value格式存儲(chǔ)內(nèi)容。
Java中可以使用Properties類來(lái)讀取這個(gè)文件,一般properties文件作為一些參數(shù)的存儲(chǔ),使得代碼更加靈活。
這里先定義一個(gè)data.properties文件,內(nèi)容如下:
cn=12 kr=14 jp=64
既然properties是一個(gè)文件,那么我們也可以用FileInputStreram來(lái)進(jìn)行讀?。?/p>
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\data.properties"))) {
int data = -1;
while((data = bis.read()) != -1) {
System.out.print((char)data);
}
} catch (IOException e) {
e.printStackTrace();
}
運(yùn)行結(jié)果
// cn=12
// kr=14
// jp=64但是,由于properties文件中每一行都是獨(dú)立的鍵值對(duì),這種普通讀取方式并沒(méi)有按照鍵值對(duì)的方式進(jìn)行讀取,而是逐個(gè)字節(jié)讀取,對(duì)于這種文件來(lái)講是沒(méi)有意義的。
所以就應(yīng)該使用Properties類來(lái)進(jìn)行讀取,從jdk源碼中可以看出,Properties繼承自Hashtable,因此,Properties也同樣有put和get方法,由于,properties是一個(gè)文件,Properties類提供了一個(gè)load()方法,InputStram作為數(shù)據(jù)源,傳入一個(gè)輸入流,把輸入流中的內(nèi)容傳入到內(nèi)部的key和value中,然后就能讀取到properties文件中的內(nèi)容了。
代碼如下:
// Properties格式文件的寫(xiě)入
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\data.properties"))) {
Properties props = new Properties();
props.load(bis); // 將“輸入流”加載至Properties集合對(duì)象中
// 根據(jù)key,獲取value
System.out.println("cn");
} catch (IOException e) {
e.printStackTrace();
}
// 運(yùn)行結(jié)果
// cn=12同樣,在寫(xiě)properties文件時(shí),Properties類也提供了store()方法,OutputStream和String類型的注釋作為數(shù)據(jù)源,將內(nèi)部的鍵值對(duì)集合和注釋傳入到輸出流中,就可以進(jìn)行寫(xiě)入操作了。
代碼如下:
// Properties格式文件的寫(xiě)入
try {
Properties props = new Properties();
props.put("F1", "2314");
props.put("F2", "2341");
props.put("F3", "5322");
props.put("F4", "4316");
// 使用“輸出流”,將Properties集合中的KV鍵值對(duì),寫(xiě)入*.properties文件
try(BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\test\\demo.properties"))){
props.store(bos, "just do IT");
}
} catch (IOException e) {
e.printStackTrace();
}
可以看到,demo.properties文件已經(jīng)被創(chuàng)建出來(lái)了,內(nèi)容包括注釋、創(chuàng)建時(shí)間和每對(duì)鍵值對(duì) 。
Java讀寫(xiě)properties文件(java.util.Properties)
Java對(duì)于properties文件的讀寫(xiě)可以說(shuō)是最簡(jiǎn)單的一個(gè)讀取、寫(xiě)入配置文件的方法了,在properties文件中,數(shù)據(jù)是用類似于鍵值對(duì)的存儲(chǔ)方式進(jìn)行存儲(chǔ)的。
下面就是一個(gè)簡(jiǎn)單的properties文件:
username=xm99 password=1234567
沒(méi)錯(cuò),就是這么簡(jiǎn)單的方式。
那么我們想要對(duì)properties文件進(jìn)行操作的時(shí)候應(yīng)該如何操作呢?
- 生成一個(gè)properties對(duì)象
- 使用properties對(duì)象的
String name = p.getProperty("valueName");方法獲得配置的值 - 使用properties對(duì)象的
setProperty(String key,String value)方法在配置文件中增加配置信息。之后使用store()方法進(jìn)行保存 - 關(guān)閉輸入流/輸出流對(duì)象
寫(xiě)入配置文件代碼實(shí)例
package proTest;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class proSavaTest {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties");
Properties pro = new Properties();
pro.setProperty("username","xm99");
pro.setProperty("passwd","12345");
pro.store(out,"acb");
}
}讀取配置文件示例
package proTest;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class proTest {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties");
Properties pro = new Properties();
pro.load(in);
String username = pro.getProperty("username");
String passwd = pro.getProperty("passwd");
System.out.println("username="+username);
System.out.println("passwd="+passwd);
in.close();
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java中使用externds關(guān)鍵字繼承類的用法
子類使用extends繼承父類是Java面向?qū)ο缶幊讨械幕A(chǔ)知識(shí),這里我們就來(lái)詳解Java中使用externds關(guān)鍵字繼承類的用法,需要的朋友可以參考下2016-07-07
創(chuàng)建首個(gè) Spring Boot 登錄項(xiàng)目的全攻略
在Java Web開(kāi)發(fā)中,登錄功能是最基礎(chǔ)也是最重要的模塊之一,本文將手把手帶你使用IntelliJ IDEA和Maven構(gòu)建一個(gè)基于Spring Boot的簡(jiǎn)單登錄系統(tǒng),感興趣的朋友跟隨小編一起看看吧2025-06-06
Spring Boot + MyBatisPlus快速實(shí)現(xiàn)單表CRUD的示例
本文主要介紹了Spring Boot + MyBatisPlus快速實(shí)現(xiàn)單表CRUD的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-06-06
java隨機(jī)抽取指定范圍內(nèi)不重復(fù)的n個(gè)數(shù)
這篇文章主要為大家詳細(xì)介紹了java隨機(jī)抽取指定范圍內(nèi)不重復(fù)的n個(gè)數(shù),感興趣的小伙伴們可以參考一下2016-02-02
超詳細(xì)講解Java秒殺項(xiàng)目登陸模塊的實(shí)現(xiàn)
這是一個(gè)主要使用java開(kāi)發(fā)的秒殺系統(tǒng),項(xiàng)目比較大,所以本篇只實(shí)現(xiàn)了登陸模塊,代碼非常詳盡,感興趣的朋友快來(lái)看看2022-03-03
win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程
這篇文章主要為大家詳細(xì)介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下2016-06-06
Struts2學(xué)習(xí)教程之自定義類型轉(zhuǎn)換器的方法
類型轉(zhuǎn)換器的作用是將請(qǐng)求中的字符串或字符串?dāng)?shù)組參數(shù)與action中的對(duì)象進(jìn)行相互轉(zhuǎn)換。下面這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之自定義類型轉(zhuǎn)換器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05
Java NIO寫(xiě)大文件對(duì)比(win7和mac)
這篇文章主要介紹了Java NIO寫(xiě)大文件對(duì)比(win7和mac),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
解決IDEA使用maven創(chuàng)建Web項(xiàng)目,出現(xiàn)500錯(cuò)誤的問(wèn)題
本文主要介紹了在使用Maven創(chuàng)建項(xiàng)目并導(dǎo)入依賴寫(xiě)完測(cè)試代碼后運(yùn)行出現(xiàn)500錯(cuò)誤的解決步驟,這種問(wèn)題的根本原因是Tomcat啟動(dòng)后缺少某些支持的jar包,導(dǎo)致運(yùn)行出錯(cuò),解決方法是在項(xiàng)目結(jié)構(gòu)中找到Artifacts,點(diǎn)擊要編輯的項(xiàng)目2024-10-10

