我需要在libgdx中打开一个文件进行随机访问,即我需要能够seek()
到文件的不同部分(不按顺序读取)。
使用libgdx我可以通过Gdx.files.internal()
访问该文件,但libgdx的文件处理程序不支持seek()
等随机访问方法。我尝试使用java.io.RandomAccessFile
,但它生成异常No such file or directory
,可能是因为文件内部存储在jar文件中。
如何使用java.io.RandomAccessFile`访问该文件,或者如何在libgdx中打开文件进行随机访问?
这需要适用于Android和桌面平台。
答案 0 :(得分:1)
这不是Libgdx的限制。您无法对存储在JAR文件中的文件进行随机访问(因为它们是压缩的,您需要流式传输内容)。 (我找不到这方面的简明参考,但请查看JarFile
和ZipFile
的定义:它们只允许您创建流文件句柄。
Libgdx本身遇到了这个问题。它将本机库存储在.jar文件(libgdx-natives.jar
)中。要使用这些文件,它会将它们提取到本地文件系统并从那里使用它们。请参阅SharedLibraryLoader.java。
据我所知,有三种解决方法可供选择:
local
(私有)存储或临时存储(希望这可以完成一次而不是在每次运行应用程序时重新完成)。