0

我正在尝试在使用 libGDX 制作的游戏中解析 xml 文件。在以下情况下,我得到 FileNotFoundException。

在一个扩展 DefaultHandler 的类中,我有这个方法来解析 xml/data.xml 下的 xml。如果我将此 xml 文件夹放在 src/ 目录之外,它可以在 Eclipse 中工作,但在我导出它时不起作用,因为文件夹“xml”没有包含在 jar 中。

现在,当我将它放在 src 文件夹下并将路径指定为“src/xml/data.xml”时,它仍然可以工作,同样只能在 Eclipse 中使用。

我怎么能找到路径?

public void loadXML() throws SAXException, IOException, ParserConfigurationException {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();

    parser.parse(Gdx.files.internal("xml/data.xml").path(), this);
}
4

1 回答 1

0

我认为 Eclipse 在目录中时将文件打包到 .jar 文件中src/(参见 Eclipse: export to .jar AND include resource files (ANT)),所以你首先需要从 to 切换Gdx.files.internalGdx.files.classpath查看 jar 中的文件通过类路径。

xml/请注意,如果要将目录保留在顶层,则应该能够将目录标记为“源文件夹”。

第二个问题是 .jar 中存储的文件没有“路径”。也就是说,没有String像“/this/is/a/path/to/a/file”这样可以表示 .jar 中的文件(因此对.path()File 的调用不会返回任何有用的东西)。不过,您可以要求一个InputStream或一个Reader这样的文件在一个 jar 中。我认为Gdx.files.classpath("xml/data.xml").reader()(or .read(1024)) 应该可以工作(假设有一种SAXParser parse方法采用Reader(or InputStream)。如果SAXParser需要 String 路径,您可能需要不同的方法。

于 2013-03-06T21:53:20.310 回答