我的 Android 应用程序尝试通过访问实际设备(在我的例子中为 /dev/block/vold/179:1)来读取 SD 卡的物理扇区。 (当然这是在有root权限的手机上)
我可以将设备打开为FileInputStream
,并从中读取数据。但是,我似乎无法读取超过 2GB 的内容(我的存储卡是 16GB)。
这是因为 Android 不支持大于 2GB 的文件吗?如果是这样的话,为什么像这样的函数position()
and skip()
accept long
论点??
有人对如何读取超过 2GB 的设备有建议吗?
尝试使用本机(jni)库创建并调用 __llseek()
int __llseek(unsigned int fd, unsigned long offset_high,
unsigned long offset_low, loff_t *result,
unsigned int whence);
我认为你应该在代码中添加原型,因为我怀疑是否有直接包含
(sys/linux-unistd.h)
当然这种方法有点无证:)但是你可以在android 3之后使用java,在之前使用这个技巧
man _llseek
欲了解更多信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)