在Android

时间:2017-06-15 21:44:45

标签: android libgdx

我在从Local(从LibGdx定义)读取文件时遇到问题,虽然它可以正常写入。

更令人不安的是,我可以在一个场景中成功读取文件,但在另一个场景中没有。 成功的方法是使用从FileHandle获取的InputStream读取文件。

InputStream is = mapFile.read();

StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, "utf-8");
String theString = writer.toString();
hash = new String(Hex.encodeHex(DigestUtils.md5(theString)));
Gdx.app.debug(TAG, hash);

当我尝试使用TmxLoader加载.tmx地图时,不起作用的是:

map = new TmxMapLoader(new LocalFileHandleResolver()).load(mapFile.path());

com.badlogic.gdx.utils.SerializationException: Error parsing file: /data/data/com.mycompany.myapp.android/files/Downloads/Maps/Smallwoods2 (61)/map.tmx
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:83)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:78)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:65)
at com.mycompany.myapp.game.maps.GameMap.<init>(GameMap.java:130)
at com.mycompany.myapp.game.maps.GameMapManager.loadMap(GameMapManager.java:56)
at com.mycompany.myapp.game.maps.GameMapManager.access$000(GameMapManager.java:15)
at com.mycompany.myapp.game.maps.GameMapManager$1.run(GameMapManager.java:123)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:452)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1522)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: /data/data/com.mycompany.myapp.android/files/Downloads/Maps/Smallwoods2 (61)/map.tmx (Local)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:80)
at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:163)
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:81)

我甚至使用adb shell进入数据目录并验证该文件是否存在。

如果我使用内部文件,它也可以正常工作。

编辑:我在Android上运行

1 个答案:

答案 0 :(得分:0)

好的,所以我经常解决自己的问题。

问题是我传递的是绝对路径,但是当使用LocalFileResolver时,你只需传递相对路径。

所以我传递了

/data/data/com.mycompany.myapp.android/files/Downloads/Maps/Smallwoods2 (61)/map.tmx

但我应该一直在传递

Downloads/Maps/Smallwoods2 (61)/map.tmx