mongocollection.find读取的文件如何转为二进制数据
时间: 2024-03-09 21:50:02 浏览: 15
使用 `GridFS` 可以将文件存储到 MongoDB 数据库中,并且可以使用 `GridFS` 读取文件并将其转换为二进制数据。
以下是将文件存储到 MongoDB 数据库中的示例代码:
```java
import com.mongodb.MongoClient;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.bson.Document;
import org.bson.types.ObjectId;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class StoreFileToMongoDB {
public static void main(String[] args) throws IOException {
// 连接到 MongoDB 服务器
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 获取 GridFSBucket 对象
GridFSBucket gridFSBucket = GridFSBuckets.create(mongoClient.getDatabase("test"));
// 读取文件并存储到 MongoDB 中
File file = new File("path/to/file");
FileInputStream inputStream = new FileInputStream(file);
ObjectId fileId = gridFSBucket.uploadFromStream(file.getName(), inputStream);
inputStream.close();
// 打印文件 ID
System.out.println(fileId);
// 关闭 MongoDB 连接
mongoClient.close();
}
}
```
以下是使用 `GridFS` 读取文件并将其转换为二进制数据的示例代码:
```java
import com.mongodb.MongoClient;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.bson.types.ObjectId;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ReadFileFromMongoDB {
public static void main(String[] args) throws IOException {
// 连接到 MongoDB 服务器
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 获取 GridFSBucket 对象
GridFSBucket gridFSBucket = GridFSBuckets.create(mongoClient.getDatabase("test"));
// 读取文件并将其转换为二进制数据
ObjectId fileId = new ObjectId("file_id");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
gridFSBucket.downloadToStream(fileId, outputStream);
byte[] binaryData = outputStream.toByteArray();
outputStream.close();
// 关闭 MongoDB 连接
mongoClient.close();
}
}
```
在上面的示例代码中,`file_id` 是文件在 MongoDB 中对应的 ID,需要将其替换为实际的文件 ID。