随机存取文件>;2GB的Android SDK
谁能告诉我如何使用android SDK随机访问2GB以上的文件。 我试图寻找一个>2147483647的位置,得到了一个异常:“值对于定义的数据类型来说太大”。这很奇怪,因为seek命令的参数类型为“long”。有关详细信息,请参见代码示例:随机存取文件>;2GB的Android SDK,android,file-io,Android,File Io,谁能告诉我如何使用android SDK随机访问2GB以上的文件。 我试图寻找一个>2147483647的位置,得到了一个异常:“值对于定义的数据类型来说太大”。这很奇怪,因为seek命令的参数类型为“long”。有关详细信息,请参见代码示例: RandomAccessFile BigFile; BigFile = new RandomAccessFile(sMyFileName, "r"); BigFile.seek(2147483648); --> Exception 谢
RandomAccessFile BigFile;
BigFile = new RandomAccessFile(sMyFileName, "r");
BigFile.seek(2147483648);
--> Exception
谢谢你的帮助,
Michael这是从本机/IO(系统)层冒出异常的结果。它与语言/VM本身中类型的大小无关。较低级别的错误为EOVERFLOW(“定义数据类型的值变大”),例如,列出此错误 假设:底层系统访问不是64位“感知的”:-)一些真正的JRE历史上也有这个问题,IIRC。不确定安卓系统的故事是什么
编辑:上的线程似乎与Android 2.x相关(并且包含关于内核构建和/或IO库限制的详细信息/提示/假设——共识是“它不起作用”)。感谢您的回答。事实上,我在寻找解决方案时读了这篇文章。但我希望他们都错了,有一个解决办法但我认为你是对的。底层IO系统似乎没有使用64位。(但lseek64实际上是Android操作系统的一部分——为什么不使用它?)