Java的文件路径或文件位置- new File()



我的项目有以下结构:

在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"),对吧?我真的不明白为什么不工作

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

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

相关内容

  • 没有找到相关文章

最新更新