簡體   English   中英

如何從Java EE Web應用程序訪問屬性文件?

[英]Howto access properties file from Java EE web application?

我在Eclipse中創建了一個動態Web項目。 我在src目錄中創建了一個屬性文件:

<project-root>/src/props.properties

我在調試模式下通過Eclipse啟動Tomcat。 現在我想從我的一個POJO中讀取屬性文件,但是我得到了一個FileNotFoundException。 當前路徑似乎是Eclipse路徑。

我在網上尋找解決方案,但沒有一個能為我工作。 也許我做錯了什么。 代碼是這樣的:

File file = new File("props.properties");
FileReader reader = new FileReader(file);
properties.load(reader);

我應該如何訪問屬性文件? 它應該放在哪里?

提前致謝。

如果它是一個Web應用程序,那么屬性將部署到WEB-INF / classes,並且可以使用類加載器加載

InputStream in = {NameOfClassWhereThisisInvoked}.class.getResourceAsStream("/props.properties");
properties.load(in);
in.close();

實際上,無論是否是webapp,都應該有效。

我假設src被定義為源文件夾

還有另一種方法,如下所示:

File file = new File(session.getServletContext().getRealPath("/") + "props.properties");

您可以提供相對於您的eclipse Web應用程序項目的“WebContent”文件夾的任何路徑,而不是“props.properties”。

這是從類路徑中的任何位置加載屬性文件的正確方法

private Properties getPropertiesFromClasspath(String propFileName)
                                                                throws IOException
{
    Properties props = new Properties();
    InputStream inputStream =
    this.getClass().getClassLoader().getResourceAsStream(propFileName);

    if (inputStream == null)
    {
        throw new FileNotFoundException("property file '" + propFileName
      + "' not found in the classpath");
}

props.load(inputStream);
return props;
}

您可以創建一個單例類,以便在首次訪問時在內存中加載屬性,然后通過靜態方法使用它們。 有關這方面的完整示例,請訪問http://bharatonjava.wordpress.com/2012/09/12/using-properties-file-in-java-application/

在src文件夾中的Kepp ur Properties文件和以下代碼足以讀取屬性文件

  **File file = new File("./src/config.properties");
  FileReader reader = new FileReader(file);
  prop.load(reader);
  System.out.println(prop.getProperty("directorypath"));**

檢查這個問題 你應該做“src / props.properties”

您的項目是否設置為自動構建? 如果是這樣(或者您正在手動構建),請檢查props.properties是否出現在項目的輸出文件夾中(在Eclipse中,這通常是“bin”,但可能是WebRoot或其他內容,具體取決於項目的設置方式)。

當項目構建時,它應該復制配置文件以及編譯的類,JSP等。但是,我認為文件讀取器默認使用JVM的主目錄作為源代碼。 在Eclipse的情況下,這意味着您的props.properties文件必須位於項目根目錄中 ,即不是“src”文件夾。

暫無
暫無

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

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