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

时间:2013-08-05 09:19:17

标签: java android

我正在做一个Android项目。在这个项目中,我需要逐个读取SD卡的数据。我尝试过某种方式,比如

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

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

3 个答案:

答案 0 :(得分:0)

要逐扇区读取SD卡,您需要以root身份运行。我建议如下:

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

这应该返回一个Process对象,其标准输出流包含数据。 SD卡的设备名称可能因系统不同而有所不同,AFAIK没有标准化的方法来查明它是什么,因此您必须进行一些实验。

祝你好运。 :)

答案 1 :(得分:0)

如果您阅读了块设备,Jules是对的, 但是/ dev / fuse(使用fuse守护程序)安装了新系统中的内部存储器(exec安装在要检查的设备上)或/ mnt / shell / emulated(或类似于smth),这不是块设备但是a character device( character special file),意味着您无法使用随机访问来获取数据。 查看this,这可能会有所帮助。

答案 2 :(得分:-1)

你想从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
}