簡體   English   中英

從config.properties文件中讀取Maven項目

[英]Reading from config.properties file Maven project

我是maven和java的新手,我導入了maven項目,它有config.properties文件,這個文件包含

PATH_TO_QUERY_FILE=abc.txt

和使用config.properties中的屬性的類

queryFile = prop.getProperty("PATH_TO_QUERY_FILE");

我應該在配置中為此文件添加實際路徑以使代碼在運行時讀取它嗎? 喜歡

PATH_TO_QUERY_FILE=/home/user/workspace/project/abc.txt 

或不 ?

  • 當我mvn package項目我沒有在創建的jar文件中找到這個文件時,這是因為我正在詢問的真實路徑嗎?

在此輸入圖像描述

編碼員使用了這個陳述

FileInputStream finputstream = new FileInputStream( "/home/user/workspace/project/config.properties"); prop.load(finputstream); queryFile = prop.getProperty("PATH_TO_QUERY_FILE"); fos = new FileOutputStream(new File( prop.getProperty("PATH_TO_OUTPUT_FILE"))); finputstream.close();

這取決於您計划如何分發您的應用程序。 以及你如何閱讀文件。 基本上有兩種選擇:從文件讀取和從類路徑讀取。

1.從文件中讀取。

如果您通過將此路徑傳遞給File構造函數或傳遞給某個FileStream來使用此路徑,那么您應該知道相對於工作文件夾將解析您的路徑。 工作文件夾基本上是一個,從中啟動java -cp .. some.MainClass命令。 在這種情況下,您必須隨身份復制config.properties文件並從相應的目錄運行命令。 文件配置在某種程度上更靈活,如果您想要更改該配置中的某些值,則無需重建應用程序(或手動重新打包)。 如果您不是真的計划在分發后更改值,通常最好將其打包在罐子中並作為資源讀取。

2.從資源中讀取。

Java有一種從類路徑中讀取資源的機制。 要做到這一點,首先需要在通常的jar中打包資源,然后再轉到classpath。 然后,您可以通過獲取適當的類加載器引用將它們加載到您的程序中。 通常你只需在上下文中使用任何類:

InputStream s = AnyClass.class.getClassLoader().getResourceAsStream("/config.properties");
//or shortcut version
InputStream s = AnyClass.class.getResourceAsStream("/config.properties");

//now can use this input stream as usually, i.e. to load as properties
Properties props = new Properties();
props.load(inputStream);

現在您的問題是如何使用maven正確加載此資源。 默認情況下,maven將<MODULE_DIR>/src/main/resources所有文件打包到生成的jar中。 因此,您只需將abc.txt放入<MODULE_DIR>/src/main/resources/whatever/abc.txt並將其加載為...getResourceAsStream("/whaterver/abc.txt") 無論你如何運行你的應用程序,這都可行:從IDE或打包后。 無論你做了什么,都要做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM