2017-06-15 13 views
0

Local(LibGdxで定義されている)からのファイルの読み込みに問題がありますが、書き込みに問題はありません。AndroidでLibGdxファイル(ローカル)が見つかりません

問題が発生するのは、あるシナリオではファイルを正常に読み取ることができますが、別のシナリオではファイルを正常に読み取ることができないということです。 成功した方法は、FileHandleから取得したInputStreamを使用してファイルを読み込む場合です。私もadbのシェルとのデータディレクトリに入力され、ファイルが存在することを確認し

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) 

:私は次のようにTmxLoaderで.tmxマップをロードしようとすると、動作しません何

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); 

です。

私は内部ファイルでもそれをうまく動作します。

編集:私は、[OK]をアンドロイド

+0

を渡すされている必要がありますこれは、構文解析エラーです、スタックによると、それはあなたのファイルを見つけないトレースが、それは、それをデシリアライズに失敗し –

+0

@ cedric-martens SerializationExceptionはファイルが見つからないために発生しているため、OPの状態は正しいものです。 OPアプリケーションをどのように実行していますか?たぶん、それはあなたがあなたの作業の原則をどのように設定するかと関係があります。 – Logain

+0

私の間違い、私はAndroid上でそれを実行していることを追加することを忘れてしまった。デスクトップ上で同じコードを実行しましたが、内部ファイルでもうまくいきました。アンドロイド資産を作業ディレクトリに設定しなければならないと言った他の記事を見つけましたが、それがアンドロイドでも意味するのかどうかはわかりませんでした。私には実際には作業ディレクトリを設定する必要はないようですAndroidでさらに、1つのケースで同じディレクトリのファイルを読み込む作業があり、同じアプリケーションでそれらのファイルも書き込まれているので、間違っているかどうかは分かりません。 – simernes

答えて

0

でこれを実行していますので、1は、多くの場合、同じように私は私自身の問題を解決しました。

問題は絶対パスを渡していたことですが、LocalFileResolverを使用すると、相対パスを渡すだけです。

だから私は

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

を渡しました。しかし、私は

Downloads/Maps/Smallwoods2 (61)/map.tmx 
関連する問題