2016-05-13 16 views
0

fileInputStreamを使用してサーブレット内のプロパティファイルを読み込もうとしています。WebアプリケーションでFileInputStreamが動作しない

ただし、ファイルが見つかりません例外を取得するconstanltyです。

これは、それが正常に動作しているgetResourceAsStreamを使用している間、我々は

Properties properties = new Properties(); 
      File propertyFile = new File("config" + File.separatorChar + "abc.properties"); 
      try { 
      FileInputStream propertyFileStream = new FileInputStream(propertyFile); 
       properties.load(propertyFileStream); 
       propertyFileStream.close(); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

を使用しているコードの一部です。

しかし、FileInputStreamが機能しない理由を理解する必要があります。

config \ abc.propertiesファイルをwebInfに配置しました。また、srcフォルダ(javaクラスパス)、webContentフォルダ、WebInf \ Classesフォルダに配置しようとしましたが、成功しませんでした。

+0

が機能していない:あなたの興味のための完全なパスを取得する

InputStream is = getContext().getResourceAsStream("/WEB-INF/yourFolder/abc.properties"); 

?あなたはプロパティ値を取得できませんか? –

+0

これはFileNotFOundExceptionを与えています – user123

+0

と私はWebアプリケーションでそれを呼び出すことです – user123

答えて

0

リソースはファイルではありません。ファイルシステムには存在しないため、FileまたはFileInputStreamでアクセスすることはできません。

Class.getResource()を使用してください。パスがするServletContextから取らなければならないので、あなたは、Webアプリケーションのリソースを取得するには、このコードを使用する必要があります

ResourceBundle resource = ResourceBundle.getBundle("test"); 
    String VALUE1=resource.getString("KEY1"); 
    String VALUE2=resource.getString("KEY2"); 
+0

しかし、スタンドアロンプ​​ログラムでアクセスできるのはなぜですか? – user123

+0

同じコード部分 – user123

+0

スタンドアロンプ​​ログラムではJARファイルを使用していないため、ファイルシステムからクラスにアクセスしています。 – EJP

0

てみてくださいあなたがサーブレット内にあるかどうか、私は、それはあなたが探しているものだと思います:

String fullPath = getContext().getRealPath("/WEB-INF/yourFolder/abc.properties"); 
+0

なぜFileInputStreamが動作しないのですか?これはなぜスタンドアロンでは動作しますが、Webでは動作しませんか? – user123

0

を使用して

関連する問題