【问题标题】:How to read an internal file in a web project如何在 Web 项目中读取内部文件
【发布时间】:2015-05-27 09:10:58
【问题描述】:

各位,原谅我还在学习Java开发吧。

假设我们有如下 Web 项目的结构。

srcconfig 位于 web 项目的 Java Resources 文件夹下。

src
 ... 
 |- a.b.c.package
    |-test.java
 ...
config
 |-1.xml
 |-2.xml
   ...
configfolder
 |-1.properties  
 |-2.properties
testfolder
 |-test.properties 

我想知道我是否使用dom4j。如何读取test.java 中的xml 文件(1.xml)。谢谢。

我的实验

test.java。我发现我可以成功使用class.getClassLoader().getResourceAsStream("test.properties")src的任何文件夹或子文件夹中加载test.properties

是不是说getResourceAsStream可以递归搜索到项目任意文件夹中的指定文件?我只是无法理解它是如何工作的。谢谢。

【问题讨论】:

标签: java servlets war web-deployment dom4j


【解决方案1】:

getResourceAsStream() 方法以类路径为根搜索资源。我想在你的情况下'testfolder'是源文件夹。如果你的 1.properties 在 'testfolder/mypath/1.properties' 中,那么你需要指定 getResourceAsStream("mypath/1.properties")

【讨论】:

  • 但实际上我并没有指定像some path/1.properties/some path/1.properties这样的相对路径。我只是将文件名1.properties指定为getResourceAsStream的参数。它有效。为什么 ?谢谢
  • 因为如果 testfolder 是资源文件夹,那么 1.properties 将在类路径的根目录中
  • 啊……知道了。是真的。生成战争时,所有属性文件和xml文件都在\WEB-INF\classes中。这就是"1.propertes"之前不需要加“/”的原因吗?谢谢。
  • 是的,就是这个原因
  • 我没有提出任何建议,只是警告人们遇到的常见困惑。继续使用 ClassLoader.getResourceAsStream() 我会说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
相关资源
最近更新 更多