0

Android でJAVA APIを使用して SDCARD からファイルの内容を読み取ることができるかどうかを知りたいです。
NDK Cコードを使用してそれを行うことができます

int fd = open(str, O_RDWR | O_NONBLOCK | O_DIRECT);  
readCount = read(fd, pBuffer, size); 

いつpBufferバッファが整列されますが、Javaから直接使用して読み取ると

bytesRead = fin.read(originalBuffer)

キャッシュからファイルデータを取得します

4

2 に答える 2

0

ファイル記述子を O_DIRECT で渡すことは JNI ( http://www.kfu.com/~nsayer/ Java/jni-filedesc.html - この手法を使用して、ARM 用の Oracle Java VM で UTF-8 名で名前が付けられたファイルを開くことができましたが、これは機能しません)。

しかし、あなたのニーズを満たすためには、ページアラインされた読み取り操作の宛先バッファーをシステムに提供する必要があります。これがないと、最初にデータを読み取ろうとした後に、基礎となる Linux システムが EINVAL エラーを返すためです。

ページ アラインされた読み取りバッファを提供できる Java コードを認識していません。

于 2012-02-17T01:49:53.357 に答える
0

したがって、長い調査とテストの結果、Java から直接ファイルを開く方法がないことがわかりました。それを行う唯一の方法は、質問の本文で説明されているように、NDK を使用し、パラメーターを
使用してファイルを開くことです。 コンパイルするには、コードディレクティブを使用する必要があることに注意してください。O_DIRECT
-D_GNU_SOURCE

于 2011-12-26T08:58:20.843 に答える