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

时间:2013-05-01 05:34:49

标签: java file-io filepath readxml file-location

我的项目有以下结构。

在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"),对吗?我真的不明白为什么这不起作用。

1 个答案:

答案 0 :(得分:20)

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

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