如何在java Web应用程序中访问WEB-INF / META-INF中的文件?

问题描述 投票:4回答:3

所以我读的这本书说:

与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 ..

谢谢。

java tomcat classloader
3个回答
5
投票

试试这个:

URL resource=this.getClass().getClassLoader().getResource("META-INF/test.txt");

因为您的/ META-INF位于您的根路径中,您将不得不使用META-INF / test.txt来访问它。


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");

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");
© www.soinside.com 2019 - 2024. All rights reserved.