1

Java で Web アプリケーション プロジェクトを作成しています。そのプロジェクトをデプロイすると、プロジェクトは Tomcat サーバー上でフォルダ レベルで次のような構造になります。

-conf
-image
-META-INF -プロファイル
-WEB
-INF

「profiles」および「config」フォルダーからいくつかのファイルを読み取りたい。使ってみた

Properties prop = new Properties();
try{
    prop.load(new FileInputStream("../webapps/WebApplicatioProject/profiles/file_001.properties"));
} catch (Exception e){
   logger.error(e.getClass().getName());
}

それは動かなかった。それから私は

Properties prop = new Properties();
try{
    prop.load(getClass().getResourceAsStream("../../../../profiles/fille_001.properties"));
} catch (Exception e){
    logger.error(e.getClass().getName());
}

それも機能しませんでした。

WEB-INF フォルダーの外にあるフォルダー「profiles」と「conf」からファイルを読み取るにはどうすればよいですか?

4

6 に答える 6

1

ServletContext.getResource(または)を使用getResourceAsStreamして、Webアプリケーションに関連するパス(以下を含むがこれに限定されない)を使用してリソースにアクセスできますWEB-INF

InputStream in = ctx.getResourceAsStream("/profiles/fille_001.properties");
if(in != null) {
  try {
    prop.load(in);
  } finally {
    in.close();
  }
}
于 2012-12-10T14:09:30.910 に答える
1

ステファンが言ったように、それらを WEB-INF/... に出さないで、WEB-INF/ に入れてから、次のように読みます。

ResourceBundle resources = ResourceBundle.getBundle("fille_001");

これで、fille_001.properties 内のプロパティにアクセスできます。

于 2012-12-10T14:00:03.360 に答える
0

本当に必要な場合は、場所をリバース エンジニアリングできます。一般的な例外をキャッチする前に FileNotFoundException をキャッチし、File.getPath() をログに記録します。これにより、絶対ファイル名が出力されます。相対パスがどのディレクトリから派生したかを確認できるはずです。

于 2012-12-10T13:54:02.823 に答える
-1

使用できます

this.getClass().getClassLoader().getResourceAsStream("../../profiles/fille_001.properties")

基本的に、Classloader はリソースをWeb-Inf/classesフォルダー内で検索し始めます。したがって、相対パスを指定することで、web-infフォルダー外の場所にアクセスできます。

于 2016-01-21T11:22:20.700 に答える