0

ファイル記述子を使用して doGet メソッドで Tomcat コンテナーからファイルを読み込もうとしています。プログラムを実行すると、Tomcat の bin フォルダーの下にある「sample.txt」が検索されます。リソース ファイルを Tomcat bin の一部にしたくありません。リソースディレクトリを柔軟に定義できる、より良いアプローチでファイルを読み取るにはどうすればよいですか。また、Tomcat でヘルパー クラスとしてデプロイされた POJO からファイルを読み込もうとしています。別のディレクトリでファイルを探すように tomcat でクラスパスを設定することはできますか? どんな指針も大いに役立ちます。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.print("Sample Text");
    RSAPublicCertificate rsa = new RSAPublicCertificate();
    out.print(rsa.getCertificate());
    File file = new File("sample.txt");
    out.print(file.getAbsolutePath());
    FileInputStream in = new FileInputStream(file);

}

D:\apache-tomcat-6.0.20\bin\sample.txt
4

1 に答える 1

1

実際、相対パスでnew File()andを使用することは避けてください。new FileInputStream()背景情報については、getResourceAsStream() と FileInputStreamの比較も参照してください。

次のような絶対パスを使用するだけです

File file = new File("/absolute/path/to/sample.txt");
// ...

または、指定されたパスをクラスパスにshared.loaderプロパティ として追加します/conf/catalina.propeties

shared.loader = /absolute/path/to

次のようにクラスパスから取得できるように

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sample.txt");
// ...
于 2012-12-03T18:32:04.563 に答える