我建立一个WAR/EAR和我的部件之一,在许多自定义配置文件中读取使用文件IO:如何使用字符串路径名在WAR中打开资源文件?
Reader reader = new BufferedReader(new FileReader(path));
的路径以上是作为属性通过Spring的传递给这个类的字符串applicationContext.xml文件。
如果我想将所有这些配置文件放在WAR中,我需要指定什么字符串路径?这甚至可以完成?或者是组件不正确,应该使用getResourceAsStream()
代替?
我浏览并发现大量的信息在getResource()
和URI。然而,我找不到是否有可能创建正确的文件路径到内的资源applicationContext.xml
让您的类路径中的文件资源简化了访问。但还有另外一种可能性,就像这个问题的答案中所描述的一样(http://stackoverflow.com/questions/9618483/relative-views-in-view-states-within-a-flow-that-is-loaded-从-A-JAR文件)。 [servlet API](https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String))描述了这些资源的位置。基本上你的WAR应该包含一个文件夹** META-INF/resources **,你的文件不应该放在类路径中,必须放在那里。 – Markus 2012-03-19 18:23:20
这个答案对我不起作用。我得到一个'IOException'因为找不到文件。另外,我看到下面的评论:“默认情况下,java.io包中的类总是针对当前用户目录解析相对路径名,该目录由系统属性user.dir命名,并且通常是Java虚拟机被调用。“在[java.io.File javadoc](http://docs.oracle.com/javase/6/docs/api/java/io/File.html) – 2012-03-19 23:36:59
根据spring,你需要使用“classpath: MyResource.properties”。你可以在这里找到参考http://static.springsource.org/spring/docs/2.0.x/reference/resources.html – uaarkoti 2012-03-20 01:53:46