我在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文件?
答案 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"));