我有以下目录结构:
更新结构
src
|
-test
|
-java
| |
| -SomeXmlTest.java
|
-resources
|
-someXmlContent.xml
我觉得这样的做法很糟糕:
new File(C:\Project ... \src\resources\someXmlContent.xml)
// or magic dance like that
File currentDir = new File(System.getProperty("user.dir");
File parent = currentDir.getParent();
for (File file:parent.listFiles()){
//find resources directory and iterate over it files
}
我相信有一个简单的注释基础解决方案,例如我只是在一些注释中编写“src \ resources \ someXmlContent.xml”并自动解析路径,但是我该怎么办呢?
答案 0 :(得分:1)
使用资源代替文件。通过这种方式,您可以将应用程序打包在jar中并检索jar内的资源。
使用InputStream而不是File / FileInputStream:
InputStream in = getClass().getResourceAsStream("/someXml.xml");
这是比File更通用的解决方案。
答案 1 :(得分:0)
如果你可以重构你的代码!它应该采取输入流而不是文件。然后在内存流中使用(例如apache commons IOUtils)。这样您就无法访问任何外部资源