有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在libgdx中打开随机访问文件

我需要在libgdx中打开一个文件进行随机访问,也就是说,我需要能够seek()访问文件的不同部分(不按顺序读取)

使用libgdx,我可以通过Gdx.files.internal()访问文件,但是libgdx的文件处理程序不支持像seek()这样的随机访问方法。我尝试使用java.io.RandomAccessFile,但它会生成异常No such file or directory,可能是因为该文件存储在jar文件的内部

如何使用java访问该文件。木卫一。RandomAccessFile`或者,我如何在libgdx中打开文件进行随机访问

这需要在Android和桌面平台上都能工作


共 (1) 个答案

  1. # 1 楼答案

    这不是Libgdx的限制。不能对存储在JAR文件中的文件进行随机访问(因为它们是压缩的,所以需要流式传输内容)。(我找不到这方面的简明参考,但看看JarFileZipFile的定义:它们只允许创建流文件句柄)

    Libgdx本身就遇到了这个问题。它将本地库存储在数据库中。jar文件(即libgdx-natives.jar)。为了使用这些文件,它将它们提取到本地文件系统,并从那里使用它们。见SharedLibraryLoader.java

    据我所知,有三种变通方法可供选择:

    1. 不需要在代码中进行随机访问
    2. 将文件从JAR流式传输到内存中,并在那里随机访问它
    3. 将文件从JAR复制到local(私有)存储或临时存储中(希望这可以只执行一次,而不是每次运行应用时都重新执行)