从类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读取资源文件的可能方式,值得一读。