从类path资源(XML文件)获取inputstream

在Java Web应用程序中,假设我想要获取位于CLASSPATH(即文件夹内)的XML文件的InputStream,我该如何做?

ClassLoader.getResourceAsStream()

 ClassLoader.class.getResourceAsStream("/path/file.ext"); 

这取决于XML文件的确切位置。 它是否在源文件夹(在“默认包”或“根”)或在类相同的文件夹?

在前一种情况下,您必须使用“ /file.xml ”(注意前导斜杠)来查找文件,并且使用哪个类来尝试查找该文件并不重要。

如果XML文件在某个类的旁边, SomeClass.class.getResourceAsStream()只有文件名是要走的路。

ClassLoader.class.getResourceAsStream("/path/to/your/xml")并确保您的编译脚本正在将xml文件复制到CLASSPATH中的哪个位置。

。someClassWithinYourSourceDir.getClass()的getResourceAsStream();

这个答案中的一些“getResourceAsStream()”选项对我来说不起作用,但是这个做了:

SomeClassWithinYourSourceDir.class.getClassLoader()的getResourceAsStream( “yourResource”);

默认情况下,添加到Web应用程序中的类path的每个资源都被复制到部署的war中的WEB-INF / classes文件夹下。

您可以通过以下方式在eclipse中开发应用程序时进行pipe理:

右键单击项目 – >属性 – > Java Build Path – > Source选项卡 – >默认输出文件夹

在您的servlet中,您可以通过在path前加上指向WEB-INF / classes的 “/”来访问资源。

例如,要访问WEB-INF / classes下的pdf-sample.pdf ,可以使用以下命令:

 getClass().getResourceAsStream("/pdf-sample.pdf") 

本教程很好地解释了在java应用程序中从classpath读取资源文件的可能方式,值得一读。