2

私はAndroidプロジェクトをやっています。このプロジェクトでは、SD カードのデータをセクターごとに読み取る必要があります。

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

しかし、Filenotfound Exception が発生します。私はMFC(VC ++)で同様の種類のプロジェクトを行いました。そこでHandle、CreateFile、ReadFile関数を使用して、データセクターを読み込んでいます。セクターごとにデータを読み取るためのJavaの関数はありますか?

4

3 に答える 3

0

SD カードをセクターごとに読み取るには、root として実行する必要があります。次のようなものをお勧めします。

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

Processこれは、標準出力ストリームにデータが含まれるオブジェクトを返す必要があります。SD カードのデバイス名はシステムによって異なる場合があり、知る限り、それが何であるかを調べる標準化された方法はないため、少し実験する必要があります。

幸運を。:)

于 2013-08-05T10:48:45.143 に答える
0

ブロックデバイスを読み取る場合、ジュールズは正しいですが、新しいシステムの内部ストレージは、/dev/fuse から /mnt/shell/emulated (またはこのような smth) にマウントされます (チェックするためにデバイスにマウントを実行します) (fuse を使用)これはブロックデバイスではなくキャラクターデバイス (キャラクタースペシャルファイル)であり、ランダムアクセスを使用してデータを取得することはできません。これをチェックしてください。役立つかもしれません。

于 2013-08-05T11:25:14.777 に答える
-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 に答える