Записать некоторую часть файла 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) {
...
}