0

を使用してJava-driver 2.13います。GridFS は入力を として受け取るFileInputStreambyte[]インスタンスのメソッドcreateFile()で作成します。GridFSGridFSInputFile

しかし、データを取り戻そうとしたとき、メソッドとしてFileまたはメソッドoutputStreamを使用するオプションしかありませんGridFSDBFile.writeTo()

としてデータを取得したいbyte[]。GridFS API に直接的な方法はありますか、それとも手動で変換する必要がありますか?

4

1 に答える 1

1

byte[] 配列を返す直接的な方法はありませんが、ByteArrayOutputStream を使用して同様の効果を得ることができます。

GridFSDBFile file = ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
file.writeTo(baos);
byte[] bytes = baos.toByteArray();

不必要なメモリ割り当てを避けるために、GridFS ファイルの長さに基づいて ByteArrayOutputStream コンストラクターに初期サイズを渡すことができますが、ByteArrayOutputStream コンストラクターが整数を取るのに対し、長さは長いことに注意してください。toByteArray メソッドは内部バッファーのコピーを作成するため、ByteArrayOutputStream をサブクラス化して、その保護された buf フィールドに直接アクセスすることもできます。

于 2015-04-16T14:03:37.220 に答える