2016-11-11 62 views
0

我在桌面上测试我的应用程序(与android,核心和桌面模块),一切工作正常。libGDX android资产文件未找到

现在,我尝试在Android上运行,它给了我FileNotFound。我在桌面上运行之前将android资源链接到desktopLauncher,但是我是否打算为android做类似的操作?

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

我有我的文件... /安卓/资产/ liver_initial_joints.json

回答

1

Android不提供对内部应用程序的目录直接java.io.File方式访问。如果你看看libgdx的javadocs,你会发现它不能用于绝对和外部类型的文件。

如果你只需要读取一个字符串或字节数组,你可以使用fileHandle.readString()fileHandle.readBytes()。如果您需要输入流,请使用fileHandle.read();

例如:

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

内部()阅读()返回一个InputStream的字节,而不是[]。 但它是一个解决方案,它的工作,我只需要调用内部()。读()。读(数据)。 谢谢。 – neogineer

1

我发现一个非常简单的方法来做到这一点是:

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

谢谢! 但是,这是平台特定的代码? android context是'context'吗? – neogineer

+1

是的。抱歉没有指定 –