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()andnew 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 回答