Java的文件路径或文件位置 – 新文件()

我的项目有以下结构。

在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放在b.xml的同一个文件夹中,而不是放入子文件夹,但它仍然不起作用 。 如果这样可行,那么在我的情况下,我应该能够使用new File("data/b.xml") ,对吗? 我真的不明白为什么这不起作用。

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

 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