将一个bson文件的一部分写入java中的另一个bson文件

时间:2015-01-24 09:45:46

标签: java file bson

我有一个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) {
        ...
    }        
}

请帮我填写上面的代码。

1 个答案:

答案 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) {
            ...
        }