【问题标题】:libGDX android assets file not found未找到 libGDX android 资产文件
【发布时间】:2016-11-11 18:06:44
【问题描述】:

我正在桌面上测试我的应用程序(使用 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");

我的文件位于 .../android/assets/liver_initial_joints.json

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    Android 不提供对内部应用目录的直接 java.io.File 访问。如果您查看 libgdx 的 FileHandle.file() 的 javadocs,您会看到它说它只能用于 Absolute 和 External 类型的文件。

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

    例如:

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

    【讨论】:

    • internal().read() 返回一个 inputStream 而不是 byte[]。但它是一个解决方案并且它有效,我只需要调用 internal().read().read(data)。谢谢。
    【解决方案2】:

    我发现一个非常简单的方法是:

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

    【讨论】:

    • 谢谢!但是,这是特定于平台的代码吗? 'context' 是 android SDK 上下文吗?
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多