Разбиение файлов на разделы перед их загрузкойJAVA

Программисты JAVA общаются здесь
Anonymous
Разбиение файлов на разделы перед их загрузкой

Сообщение Anonymous »

Я создал логику разделения в своем коде, чтобы разобрать файл на несколько файлов и загрузить один раздел из всех, я объединил его с API, это не разделение. Я прочитал весь свой код и не вижу проблемы. Я не знаю, связана ли она с вызовом загрузки или с кодом выбора файла.
Мне нужна помощь, я предоставлю часть моего кода

Код: Выделить всё

public Single Descarga(int pageSize, String sortField, String sortOrder) {

return Single.defer(() -> {

final var fileName = LocalDate.now ()+compress (sortField+sortOrder+pageSize) +".json.gz";
final var path = UUID.randomUUID () + "-" + fileName;
final var fileOutputStream = new FileOutputStream ( path );
final var gzipOutputStream = new GZIPOutputStream ( fileOutputStream );

final var mapper = DatabindCodec.mapper ();
final var jsonGenerator = mapper.getFactory ().createGenerator ( gzipOutputStream, JsonEncoding.UTF8 );
jsonGenerator.writeStartArray ();

log.info ( "Selected pageSize {}", pageSize );
log.info ( "sorted by {}", sortField );
return select ( pageSize, sortField, sortOrder )
.toFlowable ()
.map ( row -> row.getString ( 0 ) )
.doOnNext ( node->mapper.writeValue ( jsonGenerator,node ) )
.flatMapSingle ( ds->service.prtRant ( JsonArray.of ( ds ) ) )
.ignoreElements ()
.doOnTerminate ( ()->{
jsonGenerator.writeEndArray ();
jsonGenerator.close ();
gzipOutputStream.close ();
fileOutputStream.close ();
} )
.toSingleDefault ( FileResponse.builder ()
.path ( path )
.fileName ( fileName )
.build ());

});
}
и это мой код выбора

Код: Выделить всё

public Single select(int pageSize, String sortField, String sortOrder) {
final var statement = QueryBuilder.selectFrom ( "marketplace", "bankgateway_transaction" )
.json ()
.all ()
.build ()
.setPageSize ( pageSize );

final var fetch= cqlSessionSingle.flatMap ( cqlSession -> Single.fromFuture ( cqlSession.executeAsync ( statement ).toCompletableFuture ()))
.map(AsyncPagingIterable::currentPage)
.flatMapObservable(Observable::fromIterable)
.map(row -> row.getString(0))
.toList();
final var partitioning = fetch.flatMap ( data->service.prtRant ( JsonArray.of ( data ) ) ).map(JsonArray::new);

return partitioning;
}
вызов базы данных cassandra, а затем преобразование ее в список, затем секционирование, а затем в JsonArray, чтобы упростить управление в Интернете, затем метод загрузки — вызов
и это метод разделения

Код: Выделить всё

private Single pTinter(Long count) {

final var  parZ = cPZ(count);
final var tPar = cTP(count, parZ);
return Single.zip(tPar,parZ, (total, size) -> {
//Implementacion de la logica de particion
List PartitionId = new ArrayList();
for (long i = 0; i < total; i++) {

PartitionId.add(i*size);
}
// Ordenar las particiones según el criterio de clasificación proporcionado

return new ArrayList ( PartitionId );
});
}
Как это выглядит, я разделил JsonArray, а затем записал содержимое в fileOutput, который будет хэширован и имеет тип .json.gz. Я ожидаю разделения и получаю файл меньше оригинала, но я получаю файл намного больше

Подробнее здесь: https://stackoverflow.com/questions/785 ... downloaded

Вернуться в «JAVA»