2

我正在做一个安卓项目。在这个项目中,我需要逐个扇区读取 SD 卡的数据。我尝试了一些方法,比如

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

但是 Filenotfound Exception 即将到来。我在 MFC(VC++) 中做了一个类似的项目。通过使用 Handle、CreateFile 和 ReadFile 函数,我正在读取数据扇区。java中有什么函数可以逐个扇区读取数据吗?

4

3 回答 3

0

如果您读取块设备,Jules 是对的,但是新系统中的内部存储是从 /dev/fuse(使用 fuse daemon),它不是块设备而是字符设备(字符特殊文件),这意味着您不能使用随机访问来获取数据。看看这个,它可能会有所帮助。

于 2013-08-05T11:25:14.777 回答
0

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

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

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

祝你好运。:)

于 2013-08-05T10:48:45.143 回答
-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
}
于 2013-08-05T10:38:50.560 回答