0

我正在使用Java-driver 2.13. GridFS 将输入作为FileInputStreambyte[]在实例上的createFile()方法GridFS中创建GridFSInputFile

但是当我试图取回数据时,我确实只有作为FileoutputStream使用的选项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 构造函数采用整数。您还可以将 ByteArrayOutputStream 子类化以直接访问其受保护的 buf 字段,因为 toByteArray 方法确实会创建内部缓冲区的副本。

于 2015-04-16T14:03:37.220 回答