java資源文件獲取屬性_Java讀寫資源文件類Properties

Java中讀寫資源文件最重要的類是Properties

1) 資源文件要求如下:

1、properties文件是一個文本文件

2、properties文件的語法有兩種,一種是注釋,一種屬性配置。

注??? 釋:前面加上#號

屬性配置:以“鍵=值”的方式書寫一個屬性的配置信息。

3、properties文件的一個屬性配置信息值可以換行,但鍵不可以換行。值換行用“\”表示。

4、properties的屬性配置鍵值前后的空格在解析時候會被忽略。

5、properties文件可以只有鍵而沒有值。也可以僅有鍵和等號而沒有值,但無論如何一個屬性配置不能沒有鍵。

eg:

正確的資源文件格式為:

a9f4657783e6b0dab125d2593833c023.png

2) 功能大致如下:

1. 讀寫Properties文件

2. 讀寫XML文件

3. 不僅可以讀寫上述兩類文件,還可以讀寫其它格式文件如txt等,只要符合key=value格式即可.

Properties能讀取以key,value存儲的任何格式文件,看一下他的類結構就知道為什么了

13183b409d1d45df39425cde760d5879.png

從上面的類結構圖可以看出,它繼承了Hashtable并實現了Map接口

3)代碼演示:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.ifly.myhome.test;2

3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.io.OutputStream;9 importjava.io.UnsupportedEncodingException;10 importjava.util.Properties;11

12 public classPropertiesMyTest13 {14

15 public static voidmain(String[] args)16 {17

18 String readfile = "e:" + File.separator + "readfile.properties";19 String writefile = "e:" + File.separator + "writefile.properties";20 String readxmlfile = "e:" + File.separator + "readxmlfile.xml";21 String writexmlfile = "e:" + File.separator + "writexmlfile.xml";22 String readtxtfile = "e:" + File.separator + "readtxtfile.txt";23 String writetxtfile = "e:" + File.separator + "writetxtfile.txt";24

25 readPropertiesFile(readfile); //讀取properties文件

26 writePropertiesFile(writefile); //寫properties文件

27 readPropertiesFileFromXML(readxmlfile); //讀取XML文件

28 writePropertiesFileToXML(writexmlfile); //寫XML文件

29 readPropertiesFile(readtxtfile); //讀取txt文件

30 writePropertiesFile(writetxtfile); //寫txt文件

31 }32

33 //讀取資源文件,并處理中文亂碼

34 public static voidreadPropertiesFile(String filename)35 {36 Properties properties = newProperties();37 try

38 {39 InputStream inputStream = newFileInputStream(filename);40 properties.load(inputStream);41 inputStream.close(); //關閉流

42 }43 catch(IOException e)44 {45 e.printStackTrace();46 }47 String username = properties.getProperty("username");48 String passsword = properties.getProperty("password");49 String chinese = properties.getProperty("chinese");50 try

51 {52 chinese = new String(chinese.getBytes("ISO-8859-1"), "GBK"); //處理中文亂碼

53 }54 catch(UnsupportedEncodingException e)55 {56 e.printStackTrace();57 }58 System.out.println(username);59 System.out.println(passsword);60 System.out.println(chinese);61 }62

63 //讀取XML文件,并處理中文亂碼

64 public static voidreadPropertiesFileFromXML(String filename)65 {66 Properties properties = newProperties();67 try

68 {69 InputStream inputStream = newFileInputStream(filename);70 properties.loadFromXML(inputStream);71 inputStream.close();72 }73 catch(IOException e)74 {75 e.printStackTrace();76 }77 String username = properties.getProperty("username");78 String passsword = properties.getProperty("password");79 String chinese = properties.getProperty("chinese"); //XML中的中文不用處理亂碼,正常顯示

80 System.out.println(username);81 System.out.println(passsword);82 System.out.println(chinese);83 }84

85 //寫資源文件,含中文

86 public static voidwritePropertiesFile(String filename)87 {88 Properties properties = newProperties();89 try

90 {91 OutputStream outputStream = newFileOutputStream(filename);92 properties.setProperty("username", "myname");93 properties.setProperty("password", "mypassword");94 properties.setProperty("chinese", "中文");95 properties.store(outputStream, "author: shixing_11@sina.com");96 outputStream.close();97 }98 catch(IOException e)99 {100 e.printStackTrace();101 }102 }103

104 //寫資源文件到XML文件,含中文

105 public static voidwritePropertiesFileToXML(String filename)106 {107 Properties properties = newProperties();108 try

109 {110 OutputStream outputStream = newFileOutputStream(filename);111 properties.setProperty("username", "myname");112 properties.setProperty("password", "mypassword");113 properties.setProperty("chinese", "中文");114 properties.storeToXML(outputStream, "author: shixing_11@sina.com");115 outputStream.close();116 }117 catch(IOException e)118 {119 e.printStackTrace();120 }121 }122

123 }

View Code

運行本程序所需的資源文件,我是放在E盤根目錄,如E:/readfile.properties

1. readfile.properties

username=kh

password=kh

chinese=謂語

2.?writefile.properties

#author: shixing_11@sina.com

#Fri May 28 22:19:44 CST 2010

password=kh

chinese=\u8C13\u8BED

username=kh

3.?readxmlfile.xml

mypassword

中文

myname

4.?writexmlfile.xml

kh

中文

kh

5. readtxtfile.txt

username=kh

password=kh

chinese=中文

6.?writetxtfile.txt

password=kh

chinese=/u4E2D/u6587

username=kh

4)Properties獲取數據亂碼解決

1.原因

Properties調用load(InputStream)時,讀取文件時使用的默認編碼為ISO-8859-1;當我們講中文放入到properties文件中,通過getProperty(key)獲取值時,取到得數據是ISO-8859-1格式的,但是ISO-8859-1是不能識別中文的。

2.解決方法

通過getProperty()獲取的數據data既然是ISO-8859-1編碼的,就通過data.getByte(“iso-8859-1”)獲取獲取,使用new String(data.getByte(“iso-8859-1”),”UTF-8”)進行轉換。當然properties文件的編碼類型需要和new String(Byte[],charst)中的第二個參數的編碼類型相同

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java被放棄了_為什么學Java那么容易放棄?

學習Java確實很容易就放棄,但是也很容易就學好,因為大多數人都是抱著試一試的心態,然后當后面就堅持不下去但是回過頭來想一想,打游戲上分容易嗎,一樣是磕磕碰碰的,有時候十幾連跪都不會放棄你上分的心情。…

python 隱馬爾科夫_機器學習算法之——隱馬爾可夫(Hidden Markov ModelsHMM)原理及Python實現...

前言上星期寫了Kaggle競賽的詳細介紹及入門指導,但對于真正想要玩這個競賽的伙伴,機器學習中的相關算法是必不可少的,即使是你不想獲得名次和獎牌。那么,從本周開始,我將介紹在Kaggle比賽中的最基本的也是運用最廣的機…

java編程50_java經典50編程題(1-10)

1.有一對兔子從出生后第三個月起,每個月都生一對小兔子,小兔子長到三個月后每個月又生一對兔子,假設兔子不死亡,問每個月兔子的總數為多少?分析過程圖片發自簡書App示例代碼圖片發自簡書App運行結果圖片發自簡書App反思…

python替代hadoop_Python連接Hadoop數據中遇到的各種坑(匯總)

最近準備使用PythonHadoopPandas進行一些深度的分析與機器學習相關工作。(當然隨著學習過程的進展,現在準備使用PythonSparkHadoop這樣一套體系來搭建后續的工作環境),當然這是后話。但是這項工作首要條件就是將Python與Hadoop進行打通,本來認…

java 自動化測試_java寫一個自動化測試

你模仿購物車試一下,同樣是買東西,加上勝負平的賠率,輸出改下應該就可以了package com.homework.lhh;import java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;public class Ex04 {public static void main(String…

超大規模集成電路_納米級超大規模集成電路芯片低功耗物理設計分析(二)

文 | 大順簡要介紹了功耗的組成,在此基礎上從工藝、電路、門、系統四個層面探討了納米級超大規模集成電路的低功耗物理設計方法。關鍵詞:納米級;超大規模集成電路;電路芯片;電路設計02納米級超大規模集成電路芯片低功耗…

java中的printnb_javaI/O系統筆記

1、File類File類的名字有一定的誤導性;我們可能認為它指代的是文件,實際上卻并非如此。它既能代表一個特定文件的名稱,又能代表一個目錄下的一組文件的名稱。1.1、目錄列表器如果需要查看目錄列表,可以通過file.list(FilenameFilt…

outlook反應慢的原因_保險管怎么區分慢熔和快熔?

保險絲快熔與慢熔的區別所有雙帽;對于這樣的產品特性和安全性熔絲; gG的”,即,與接觸帽組合接觸;即,所述雙(內/外蓋)的蓋。和一般的小型或地下加工廠,以便執行切割角,降低生產成本,這將選擇單個帽鉚接“單&…

java成員內部類_Java中的內部類(二)成員內部類

Java中的成員內部類(實例內部類):相當于類中的一個成員變量,下面通過一個例子來觀察成員內部類的特點public classOuter {//定義一個實例變量和一個靜態變量private inta;private static intb;//定義一個靜態方法和一個非靜態方法public static voidsay(…

word 通配符_學會Word通配符,可以幫助我們批量處理好多事情

長文檔需要批量修改或刪除某些內容的時候,我們可以利用Word中的通配符來搞定這一切,當然,前提是你必須會使用它。通配符的功能非常強大,能夠隨意組合替換或刪除我們定義的規則內容,下面易老師就分享一些關于查找替換通…

java存儲鍵值結構_java-鍵值存儲為主數據庫

我將要開始一個項目,該項目的讀寫操作非常頻繁且頻繁.因此,環顧四周,我發現內存數據庫正是為此目的而創建的.經過更多調查后,我進入了redis.Redis看起來很酷(雖然剛開始閱讀,但是對此有很多了解).但是我主要只看過關系數據庫,并且以元組和關系的方式來考慮數據(我認為我可以隨著…

python 輸入文件名查找_python 查找文件名包含指定字符串的方法

編寫一個程序,能在當前目錄以及當前目錄的所有子目錄下查找文件名包含指定字符串的文件,并打印出絕對路徑。import osclass searchfile(object):def __init__(self,path.):self._pathpathself.abspathos.path.abspath(self._path) # 默認當前目錄def fin…

java 運行 出現選擇_Eclipse?運行出現java.lang.NoClassDefFoundError的解決方法

上篇博文也提到了這個問題,但沒有深入的講解。這次特意做了整理,詳細解釋其原因。先看錯誤java.lang.NoClassDefFoundError,顯然是java虛擬機找不到指定的類,多數情況下是外部jar中的類。Eclipse的自動化,集成化&#…

設置熄屏_剛買的手機微信收不到信息提醒耽誤事情,手機到手一定要這樣設置...

手機使用過程中經常會遇到第三方軟件接收不到信息提醒的狀況,常常因此耽誤了很多重要的事情,造成損失。特別是剛換新手機或者手機剛升級系統時發生的最多。一般都覺得是手機問題,其實只是手機的系統設置出現了問題,只要跟我按照以…

java判斷對稱素數_SM2非對稱算法的原理及實現 Java SM2的代碼案例 | 一生孤注擲溫柔 | 小奮斗...

SM2橢圓曲線公鑰密碼算法:我國自主知識產權的商用密碼算法,是ECC(Elliptic Curve Cryptosystem)算法的一種,基于橢圓曲線離散對數問題,計算復雜度是指數級,求解難度較大,同等安全程度要求下,橢圓…

multipartfile 獲取音頻時長_抖音音頻下載捷徑:一鍵提取音頻,安卓+ios全通用,完全免費...

本文相關:抖音音頻提取、抖音音頻快捷指令、捷徑怎么獲取抖音音樂…昨天有抖友分享了一個抖音短視頻鏈接,告訴我,她很喜歡這個視頻里的歌曲,但是在很多歌曲app上面卻找不到相同的版本,然后就問我,有沒有什么…

python可以做特效嗎_學習mel語言,Python,JavaScript到什么程度才能做一下大型特效,要自已開發插件腳本呢?...

感謝邀請。首先自己要在某一方面要擅長,認準一個定位。比如android是鑰匙做前端應用軟件的,python可以做爬蟲及其人工智能,js做全段網頁,java主要是做后端的1、我們程序員對于開發軟件來說,無論你選擇的是那種語言&…

POJ2513-Colored Sticks

/*思路:類似圖論中“一筆畫”問題,兩根木棒的相連接的端點是一樣的顏色,(a,b)--(b,c)--(c, d)....方法:trie樹并查集, 利用trie樹建立字符串和某一個節點的映射,并將這些和字符串構成…

php windows共享內存,給PHP開啟shmop擴展實現共享內存

這篇文章主要介紹了關于給PHP開啟shmop擴展實現共享內存,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下在項目開發中,想要實現PHP多個進程之間共享數據的功能,讓客戶端連接能夠共享一個狀態&#xff0c…

導入ansys的實體怎么進行parameter_ANSYS在線纜線束設計中的仿真應用

ANSYS采用ANSYS Maxwell、Q3D、Twin Builder等電磁仿真軟件,從線纜線束設計、寄生參數RLCG提取、到系統電磁兼容提供了全面仿真分析。創建模型ANSYS在Maxwell軟件基礎上提出針對用戶定制化的“線纜線束設計工具包”,幫助客戶參數化建立特定幾何模型&…