我有一个bson文件,(a.bson)。我想读取这个文件并提取它的一部分,然后将这些部分保存到另一个BSON文件(b.bson)中。 目前,我可以使用org.bson.BSONEncoder读取我的源文件(a.bson)并提取我最喜欢的部分(例如,每行源数据的key1和key2)。现在我想将这些数据保存在另一个bson文件(b.bson)中。实际上,我需要将这些数据保存在一个bson文件中,因为这个文件有结构,我可以很容易地检查行是否包含空间值。我写这段代码和
import org.bson.BSONEncoder;
public static void createmyFile(File sourceFile) throws FileNotFoundException, IOException {
InputStream inputStream = new BufferedInputStream(new FileInputStream(sourceFile));
BSONDecoder decoder = new BasicBSONDecoder();
try {
while (inputStream.available() > 0) {
BSONObject bsonSingleRow = decoder.readObject(inputStream);
// ---------------------------------------------------------------------
// Write bsonSingleRow.get(key1) & bsonSingleRow.get(key2) into new file
// ---------------------------------------------------------------------
}
} catch (IOException e) {
...
}
}
请帮我填写上面的代码。
答案 0 :(得分:0)
例如,如果您想要来自源文件的2%(随机选择)数据
File file = new File("a.bson");
String path = "b.bson";
BasicBSONEncoder encoder = new BasicBSONEncoder();
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
BSONDecoder decoder = new BasicBSONDecoder();
try {
while (inputStream.available() > 0) {
BSONObject bsonSingleRow = decoder.readObject(inputStream);
c = bsonSingleRow.get("yourKey").toString();
if (Math.random()> .98))
Files.write(Paths.get(path), encoder.encode(bsonSingleRow),StandardOpenOption.CREATE, StandardOpenOption.APPEND);
}
}
} catch (IOException e) {
...
}