用java将bson文件的某些部分写入另一个bson文件
我有一个bson文件,a.bson。我想读取此文件并提取其中的一些部分,然后将这些部分保存到另一个BSON文件b.BSON中。 目前,我可以使用org.bson.bsonecoder读取我的源文件a.bson,并为每行源文件提取我最喜欢的部分,例如key1和key2。现在我想将这些数据保存在另一个bson文件b.bson中。事实上,我需要将此数据保存在bson文件中,因为此文件具有结构,我可以轻松检查行是否包含空间值。我写这段代码,然后用java将bson文件的某些部分写入另一个bson文件,java,file,bson,Java,File,Bson,我有一个bson文件,a.bson。我想读取此文件并提取其中的一些部分,然后将这些部分保存到另一个BSON文件b.BSON中。 目前,我可以使用org.bson.bsonecoder读取我的源文件a.bson,并为每行源文件提取我最喜欢的部分,例如key1和key2。现在我想将这些数据保存在另一个bson文件b.bson中。事实上,我需要将此数据保存在bson文件中,因为此文件具有结构,我可以轻松检查行是否包含空间值。我写这段代码,然后 import org.bson.BSONEncoder;
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) {
...
}
}
请帮助我完成以上代码。例如,如果您希望从源文件中随机选择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) {
...
}