我正在尝试解析我正在用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);
}
答案 0 :(得分:0)
我认为Eclipse将文件打包到.jar文件中,当它位于src/
目录中时(请参阅Eclipse: export to .jar AND include resource files (ANT)),因此您首先需要从Gdx.files.internal
切换到{{ 1}}通过类路径查看jar中的文件。
请注意,如果您希望将Gdx.files.classpath
目录保留在顶层,则应该能够将xml/
目录标记为“源文件夹”。
第二个问题是.jar中存储的文件没有“路径”。那就是没有String
喜欢“/ this / is / a / path / to / a / file”可以表示.jar中的文件(因此对文件的.path()
的调用赢了'返回任何有用的东西)。不过,您可以要求InputStream
或Reader
这样的文件。我想Gdx.files.classpath("xml/data.xml").reader()
(或.read(1024)
)
应该有效(假设SAXParser
parse
方法需要Reader
(或InputStream
)。如果SAXParser
需要字符串路径,则可能需要不同的方法。