Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java将bson文件的某些部分写入另一个bson文件_Java_File_Bson - Fatal编程技术网

用java将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;

我有一个bson文件,a.bson。我想读取此文件并提取其中的一些部分,然后将这些部分保存到另一个BSON文件b.BSON中。 目前,我可以使用org.bson.bsonecoder读取我的源文件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) {
        ...
    }        
}

请帮助我完成以上代码。

例如,如果您希望从源文件中随机选择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) {
            ...
        }