java讀取配置文件,java讀取配置文件工具類

本文目錄一覽:

Java 獲取配置文件路徑

讀取配置文件 , xxx.properties放在webroot/WEB-INF/classes/目錄下

首先將配置文件轉換成InputStream,有兩種方式,原理一樣,都是通過類載入器得到資源:

(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(”xx.properties”);

(2) InputStream inputStream =

this.getClass() .getClassLoader().getResourceAsStream( “xx.properties” );

調用對象的getClass()方法是獲得對象當前的類類型,這部分數據存在方法區中,

而後在類類型上調用 getClassLoader()方法是得到當前類型的類載入器,我們知道在Java中所有的類都是通過載入器載入到虛擬機中的,而且類載入器之間存在父 子關係,就是子知道父,父不知道子,這樣不同的子載入的類型之間是無法訪問的(雖然它們都被放在方法區中),所以在這裡通過當前類的載入器來載入資源也就 是保證是和類類型同一個載入器載入的。

最後調用了類載入器的getResourceAsStream()方法來載入資源。

(3) 然後載入配置文件,讀取屬性值

Properties prop = new Properties();

prop.load(input);

String value = prop.getProperty(“PropertyName”);

input.close();

Java讀取配置文件的幾種方法以及路徑問題

.類載入器讀取:

只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。

①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();

②調用類載入器對象的方法:public URL getResource(String name);

此方法查找具有給定名稱的資源,資源的搜索路徑是虛擬機的內置類載入器的路徑。

類 URL 代表一個統一資源定位符,它是指向互聯網」資源」的指針。

資源可以是簡單的文件或目錄,也可以是對更為複雜的對象的引用.

URL對象方法:public String getPath(),獲取此 URL 的路徑部分。

示例代碼:

2.類載入器讀取:

只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。

①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();

②調用類載入器對象的方法:public InputStream getResourceAsStream(String name);

返回讀取指定資源的輸入流。資源的搜索路徑是虛擬機的內置類載入器的路徑。

Java讀取文件的幾種方式

方式一:採用ServletContext讀取,讀取配置文件的realpath,然後通過文件流讀取出來。因為是用ServletContext讀取文件路徑,所以配置文件可以放入在web-info的classes目錄中,也可以在應用層級及web-info的目錄中。文件存放位置具體在eclipse工程中的表現是:可以放在src下面,也可放在web-info及webroot下面等。因為是讀取出路徑後,用文件流進行讀取的,所以可以讀取任意的配置文件包括xml和properties。缺點:不能在servlet外面應用讀取配置信息。

方式二:採用ResourceBundle類讀取配置信息,

優點是:可以以完全限定類名的方式載入資源後,直接的讀取出來,且可以在非Web應用中讀取資源文件。缺點:只能載入類classes下面的資源文件且只能讀取.properties文件。

方式三:採用ClassLoader方式進行讀取配置信息

優點是:可以在非Web應用中讀取配置資源信息,可以讀取任意的資源文件信息

缺點:只能載入類classes下面的資源文件。

方法4 getResouceAsStream

XmlParserHandler.class.getResourceAsStream 與classloader不同

java 怎麼讀取配置文件

一.讀取xml配置文件

(一)新建一個java bean(HelloBean. java)

java代碼

(二)構造一個配置文件(beanConfig.xml)

xml 代碼

(三)讀取xml文件

1.利用ClassPathXmlApplicationContext

java代碼

2.利用FileSystemResource讀取

java代碼

二.讀取properties配置文件

這裡介紹兩種技術:利用spring讀取properties 文件和利用java.util.Properties讀取

(一)利用spring讀取properties 文件

我們還利用上面的HelloBean. java文件,構造如下beanConfig.properties文件:

properties 代碼

helloBean.class=chb.demo.vo.HelloBean

helloBean.helloWorld=Hello!chb!

屬性文件中的”helloBean”名稱即是Bean的別名設定,.class用於指定類來源。

然後利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader來讀取屬性文件

java代碼

(二)利用java.util.Properties讀取屬性文件

比如,我們構造一個ipConfig.properties來保存伺服器ip地址和埠,如:

properties 代碼

ip=192.168.0.1

port=8080

三.讀取位於Jar包之外的properties配置文件

下面僅僅是列出讀取文件的過程,剩下的解析成為properties的方法同上

1 FileInputStream reader = new FileInputStream(“config.properties”);

2 num = reader.read(byteStream);

3 ByteArrayInputStream inStream = new ByteArrayInputStream(byteStream, 0, num);

四.要讀取的配置文件和類文件一起打包到一個Jar中

String currentJarPath = URLDecoder.decode(YourClassName.class.getProtectionDomain().getCodeSource().getLocation().getFile(), “UTF-8”); //獲取當前Jar文件名,並對其解碼,防止出現中文亂碼

JarFile currentJar = new JarFile(currentJarPath);

JarEntry dbEntry = currentJar.getJarEntry(“包名/配置文件”);

InputStream in = currentJar.getInputStream(dbEntry);

//以上YourClassName是class全名,也就是包括包名

修改:

JarOutputStream out = new FileOutputStream(currentJarPath);

out.putNextEntry(dbEntry);

out.write(byte[] b, int off, int len); //寫配置文件

。。。

out.close();

原創文章,作者:FFSO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140471.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FFSO的頭像FFSO
上一篇 2024-10-04 00:23
下一篇 2024-10-04 00:23

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論