所以我读的这本书说:
与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 ..
谢谢。
试试这个:
URL resource=this.getClass().getClassLoader().getResource("META-INF/test.txt");
因为您的/ META-INF位于您的根路径中,您将不得不使用META-INF / test.txt来访问它。
目前在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");
如果您将文本文件放在WEB-INF中,您可以这样做,
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("../test.txt");
在您的情况下,由于您的文本文件位于WEB-INF内的META-INF文件夹内,您可以像这样访问文本文件,
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("../META-INF/test.txt");