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) を参照Gdx.files.internal) 。Gdx.files.classpathクラスパス経由。

xml/ディレクトリを最上位に残したい場合は、ディレクトリを「ソースフォルダー」としてタグ付けできる必要があることに注意してください。

2 つ目の問題は、.jar 内に格納されたファイルの「パス」がないことです。つまりString、.jar 内のファイルを表すことができる "/this/is/a/path/to/a/file" のようなものはありません (そのため、.path()ファイルに対する呼び出しは有用なものを返しません)。ただし、そのようなjarファイルのInputStreamまたはを要求することはできます。(または) が機能するはずです ((または) を取るメソッドがあると仮定します) Reader。文字列パスが必要な場合は、別のアプローチが必要になる場合があります。Gdx.files.classpath("xml/data.xml").reader().read(1024)SAXParser parseReaderInputStreamSAXParser

于 2013-03-06T21:53:20.310 に答える