0

我有以下目录结构:

更新结构

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”并自动测试解析路径,但我该怎么做呢?

4

2 回答 2

1

使用资源而不是文件。通过这种方式,您可以将应用程序打包到 jar 中并检索 jar 中的资源。

使用 InputStream 而不是 File/FileInputStream:

InputStream in = getClass().getResourceAsStream("/someXml.xml");

这是比 File 更通用的解决方案。

于 2012-12-10T14:50:38.043 回答
0

如果你可以重构你的代码!它应该采用输入流而不是文件。然后在内存流中使用(例如 apache commons IOUtils)。这样您就无法访问任何外部资源

于 2012-12-10T15:40:28.957 回答