繁体   English   中英

如何访问SD卡上的特定原始数据?

[英]How to access specific raw data on SD card?

我正在做一个Android项目。 在这个项目中,我需要按扇区读取SD卡的数据。

RandomAccessFile file = new RandomAccessFile("\\\\.\\PhysicalDrive0","r");

但是Filenotfound异常即将到来。 我在MFC(VC ++)中做了类似的项目。 通过使用Handle,CreateFile和ReadFile函数,我可以明智地读取数据扇区。 java中有任何函数可以按扇区读取数据?

要按扇区读取SD卡,您需要以root用户身份运行。 我建议类似以下内容:

Runtime.getRuntime().exec("su -c dd if=/dev/mmcblk1 of=/dev/stdout");

这应该返回其标准输出流包含数据的Process对象。 SD卡的设备名称在不同系统之间可能会有所不同,并且AFAIK没有确定其含义的标准化方法,因此您必须进行一些实验。

祝好运。 :)

如果您阅读块设备,Jules是正确的,但是新系统中的内部存储已从/ dev / fuse(使用保险丝)挂载在/ mnt / shell / emulated(或类似的东西)上(要检查该设备的exec挂载)守护进程),它不是块设备,而是字符设备(字符特殊文件) ,这意味着您不能使用随机访问来获取数据。 看看这个 ,它可能会有所帮助。

您要从SD卡读取数据。因此请执行以下操作。

File dir = Environment.getExternalStorageDirectory();
File yourFile = new File(dir, "path_of_your_file");

然后,您可以像读取文件一样。

fileInputStream = new FileInputStream(yourFile);
BufferedReader br = new BufferedReader(new InputStreamReader(fileInputStream));
String readString = new String();
while((readString = br.readLine())!= null){
   //readString has your data
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM