服务器java类中获取相对路径与绝对路径问题???
在我的web工程里面的一个java类中用到dom4j解析xml文件,代码如下:
String configFile = "/test.xml"; //(1)test.xml文件位于WEB-INF\classes\目录下
Document doc = new SAXReader().read(new File(configFile)); //(2)
Element root = doc.getRootElement();
List<Element> subElements = root.elements();
上面代码运行的时候,第2句总报错: 找不到/test.xml文件
后来我把第2行代码改成:
Document doc = new SAXReader().read(new File(Thread.currentThread()
.getContextClassLoader().getResource(configFile).getPath()));
运行就可以读到test.xml文件了,
疑问:
1) 为什么第2行代码获取不到WEB-INF/classes/test.xml文件? 它默认不是去class目录下找的吗? 正确test.xml文件的相对路径的写法应该怎么写?
2) Thread.currentThread().getContextClassLoader().getResource(configFile).getPath() 获取的路径是
"D:\xxx\yyy\zzz\test.xml" 这种形式的, 感觉以这种形式获取的路径是一个绝对路径, 请问这行代码在非windows操作系统能不能正常运行?