Записать некоторую часть файла BSON в другой файл BSON в Java

У меня есть файл bson,(a.bson). Я хочу прочитать этот файл и извлечь некоторую его часть, а затем сохранить эти части в другой файл BSON (b.bson). В настоящее время я могу прочитать свой исходный файл (a.bson) с помощью org.bson.BSONEncoder и извлечь мои любимые части (например, 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 ответ

Решение

Например, если вы хотите 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) {
            ...
        }
Другие вопросы по тегам