Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问SD卡上的特定原始数据?_Java_Android - Fatal编程技术网

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

Java 如何访问SD卡上的特定原始数据?,java,android,Java,Android,我正在做一个Android项目。在这个项目中,我需要逐扇区读取SD卡的数据 RandomAccessFile file = new RandomAccessFile("\\\\.\\PhysicalDrive0","r"); 但Filenotfound异常即将出现。我用MFC(VC++)做了一个类似的项目。通过使用Handle、CreateFile和ReadFile函数,我可以读取数据扇区。java中有任何函数可以逐个扇区读取数据吗?您想从sd卡读取数据。所以请执行以下操作 File dir

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

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

但Filenotfound异常即将出现。我用MFC(VC++)做了一个类似的项目。通过使用Handle、CreateFile和ReadFile函数,我可以读取数据扇区。java中有任何函数可以逐个扇区读取数据吗?

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

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

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

Runtime.getRuntime().exec("su -c dd if=/dev/mmcblk1 of=/dev/stdout");
这应该返回一个
进程
对象,其标准输出流包含数据。SD卡的设备名称在不同的系统中可能会有所不同,而且目前还没有标准化的方法来确定它是什么,因此您必须进行一些实验


祝你好运

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

Runtime.getRuntime().exec("su -c dd if=/dev/mmcblk1 of=/dev/stdout");
这应该返回一个
进程
对象,其标准输出流包含数据。SD卡的设备名称在不同的系统中可能会有所不同,而且目前还没有标准化的方法来确定它是什么,因此您必须进行一些实验


祝你好运

朱尔斯是对的,如果你读一个块设备, 但是,新系统中的内部存储是从/dev/fuse(使用fuse守护进程)在/mnt/shell/simulated(或类似的smth)上安装的(要检查的设备上的exec mount),它不是块设备,而是块设备,这意味着您不能使用随机访问来获取数据。
看看,这可能会有帮助。

如果你读到一个块设备,Jules是对的, 但是,新系统中的内部存储是从/dev/fuse(使用fuse守护进程)在/mnt/shell/simulated(或类似的smth)上安装的(要检查的设备上的exec mount),它不是块设备,而是块设备,这意味着您不能使用随机访问来获取数据。
看看吧,这可能会有帮助。

你在Android上运行MFC的情况如何?你有安卓的根访问权限吗?你在安卓上运行MFC的地方如何?你有安卓的根访问权限吗?