10

我的项目具有以下结构。

在 Eclipse 中:

myPorjectName
  src
    com.example.myproject
        a.java
    com.example.myproject.data
        b.xml

a.java,我想读取b.xml文件。我怎样才能做到这一点?具体来说,在 中a.java,我使用了以下代码:

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("data/b.xml"));

此代码找不到b.xml。但是,如果我将路径更改为src/com/example/myproject/data/b.xml然后它可以工作。当前位置似乎在我的项目文件的根目录中。

但是我看别人的例子,如果b.xmla.java在同一个文件夹里,那么我们可以直接使用new File("b.xml"). 但是我尝试放入b.xml同一个文件夹a.java而不是放入子文件夹,但它仍然不起作用。如果这可行,那么就我而言,我应该可以使用new File("data/b.xml"),对吗?我真的不明白为什么这不起作用。

4

1 回答 1

21

如果它已经在类路径和同一个包中,使用

URL url = getClass().getResource("b.xml");
File file = new File(url.getPath());

或者,将其读为InputStream

InputStream input = getClass().getResourceAsStream("b.xml");

static方法内部,您可以使用

InputStream in = YourClass.class.getResourceAsStream("b.xml");

如果您的文件与您尝试从中访问文件的类不在同一个包中,那么您必须为其提供以'/'.

ex : InputStream input = getClass().getResourceAsStream
           ("/resources/somex.cfg.xml");which is in another jar resource folder
于 2013-05-01T05:39:31.857 回答