2016-11-11 4 views
0

Ich teste meine App (mit Android, Core und Desktop-Module) auf dem Desktop, alles funktioniert gut.libGDX android Assets Datei nicht gefunden

Jetzt, wo ich versuche, auf Android zu laufen, gibt es mir FileNotFound. Ich habe Android Asset mit DesktopLauncher vor dem Ausführen auf dem Desktop verbunden, aber soll ich etwas ähnliches für Android tun?

  File file = Gdx.files.internal("liver_initial_joints.json").file(); 
      FileInputStream fis = new FileInputStream(file); 
      byte[] data = new byte[(int) file.length()]; 
      fis.read(data); 
      fis.close(); 

      str = new String(data, "UTF-8"); 

Ich habe meine Datei auf .../android/assets/liver_initial_joints.json

Antwort

1

Android bietet keine direkten java.io.File Zugriff auf den internen App-Verzeichnis. Wenn Sie sich die javadocs für libgdx's FileHandle.file() ansehen, werden Sie sehen, dass es besagt, dass es nur für absolute und externe Dateitypen verwendbar ist. Wenn Sie nur eine Zeichenfolge oder ein Byte-Array lesen müssen, können Sie fileHandle.readString() oder fileHandle.readBytes() verwenden. Wenn Sie einen Eingabestream benötigen, verwenden Sie fileHandle.read();.

Zum Beispiel:

 byte[] data = Gdx.files.internal("liver_initial_joints.json").read(); 
     str = new String(data, "UTF-8"); 
+0

internal() lesen() gibt einen input statt byte [].. Aber es ist eine Lösung und es hat funktioniert, ich musste nur intern() aufrufen. Read() .lesen (Daten). Danke. – neogineer

1

Ich finde eine wirklich einfache Möglichkeit, dies zu tun ist, mit:

InputStream is = context.getAssets().open("liver_initial_joints.json"); 
+0

Danke! Aber ist dieser plattformspezifische Code? ist 'Kontext' der Android SDK Kontext? – neogineer

+1

ja ist es. tut mir leid, dass ich das nicht angegeben habe –

Verwandte Themen