バッファリングせずに、ファイルを直接読み取り/書き込みする必要があります。O_DIRECT
古いCの方法では、フラグ付きのopenメソッドを使用してこれを行いました。
これはJavaの方法で可能ですか?
ここにO_DIRECT
説明 があります
このファイルとの間のI/Oのキャッシュ効果を最小限に抑えるようにしてください。一般に、これによりパフォーマンスが低下しますが、アプリケーションが独自のキャッシュを実行する場合など、特別な状況で役立ちます。ファイルI/Oは、ユーザースペースバッファとの間で直接実行されます。
更新しました:
これが私のコードサンプルです、
// write
fos = new FileOutputStream(fileName);
fos.write(inputData);
fos.flush();
fos.close();
// read
fis = new FileInputStream(fileName);
int len = fis.read(outputData, offset, length);
fis.close();
背景は、SDカード(ある種のスマートカード)上のファイルにデータ(実際にはコマンド)を書き込んだ後、スマートカードがコマンドを受け取り、同じファイルに結果を準備したことです。通常、私はそのファイルからデータ(結果)を読み取ることができますが、同じようにinputData
なりoutputData
ました。つまり、コマンドを取り戻しただけです。それは予想外の結果です。コードが実際のファイルではなく、バッファとの間で書き込み/読み取りを行っただけなのかどうか疑問に思っています。フラッシュが機能しませんでした。