所以我读的这本书说:
与JAR文件不同,根级别/ META-INF目录不在 应用程序类路径。您无法使用ClassLoader获取 此目录中的资源。然而,/ WEB-INF / classes / META-INF已启用 类路径。您可以放置所需的任何应用程序资源 这个目录,它们可以通过ClassLoader访问。
目前在WEB-INF目录下,我有一个META-INF目录和一个名为:test.txt的文件。
如何使用ClassLoader 阅读此文件?
我试过这个:
URL resource = this.getClass().getClassLoader().getResource("test.txt");
System.out.println(resource);
但是这会返回null。
我知道该文件可以像:
InputStream resourceContent = getServletContext().getResourceAsStream("/WEB-INF/META-INF/test.txt");
System.out.println(resourceContent);
但这不是我想要的。我想了解ClassLoader ..
感谢。
答案 0 :(得分:5)
尝试使用:
URL resource=this.getClass().getClassLoader().getResource("META-INF/test.txt");
由于您的/ META-INF位于您的根路径中,您必须使用META-INF / test.txt来访问它。
答案 1 :(得分:3)
目前在WEB-INF目录下我有一个META-INF目录
然后你做错了。阅读你自己的报价。它说WEB-INF / classes / META-INF。
URL resource = this.getClass().getClassLoader().getResource("test.txt");
应该是:
URL resource = this.getClass().getClassLoader().getResource("META-INF/test.txt");
答案 2 :(得分:0)
如果将文本文件放在WEB-INF中,则可以这样做,
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("../test.txt");
在您的情况下,由于文本文件位于WEB-INF内的META-INF文件夹中,因此您可以像这样访问文本文件,
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("../META-INF/test.txt");