如何在META-INF中打开独立于环境的文件

时间:2014-12-14 19:55:30

标签: java eclipse tomcat servlets meta-inf

我在java中学习servlet编程,使用tomcat 7作为服务器,eclipse作为IDE,ubuntu作为OS。 我需要打开文件" xyz.txt"在META-INF文件夹中,但我想独立于工作环境(文件系统,操作系统,IDE,服务器,生产开发环境......)。 我已经找了几个小时来回答这个问题,但没有成功。我读到我应该使用类似下面的代码,但所有这些代码行都给我null(它在Servlets doGet方法中,也许它不适合这样的代码,但它&#39 ; s仅用于学习目的):

this.getClass().getResource("META-INF/xyz.txt"),
this.getClass().getResource("/META-INF/xyz.txt"),
this.getClass().getResourceAsStream("META-INF/xyz.txt"),
this.getClass().getResourceAsStream("/META-INF/xyz.txt"),
this.getClass().getClassLoader().getResource("META-INF/xyz.txt"),
this.getClass().getClassLoader().getResource("/META-INF/xyz.txt"),
this.getClass().getClassLoader().getResourceAsStream("META-INF/xyz.txt"),
this.getClass().getClassLoader().getResourceAsStream("/META-INF/xyz.txt"),

编辑:有没有办法让java.io.File对象指向xyz.txt文件?

2 个答案:

答案 0 :(得分:1)

使用ServletContext方法。例如。 getResourceAsStream()。在doGet()

中尝试以下代码
ServletContext context = getServletContext();
InputStream inStream = context.getResourceAsStream("/META-INF/xyz.txt");

答案 1 :(得分:1)

使用context.getRealPath获取绝对路径并创建一个文件对象来访问该文件:

File file = new File(getServletContext().getRealPath("META-INF/xyz.txt"));