Как создать файлы размером 5 МБ из данных

#java #spring-boot #spring-mvc #spring-data-jpa

Вопрос:

У меня есть кое-какие данные в базе данных. Я хочу отправить эти данные в конечную точку rest api в файле. Поэтому я загружаю эти данные в свой объект. Преобразование этого объекта в тело строки json с помощью mapper.writeValueAsString. Теперь я должен разделить эти данные на блоки размером 5 МБ, а затем отправить их в конечную точку. Итак, у меня есть 2 проблемы

  1. Как разделить эти данные на 5 мб фрагментов
  2. Как создать файл размером 5 МБ без сохранения на дисках.

До сих пор мне это удавалось.

     @Service
    public class DataService {

    @Autowired
    private CityRepository cityRepository;


    public void applyBatch() {

    ExecutorService executor = Executors.newFixedThreadPool(10);
    List< Future<String> > futureList = new ArrayList<Future<String>>();

    List<City> cities = cityRepository.findAll();
    Request request = new Request(1, cities);

    ObjectMapper mapper = new ObjectMapper();
    String jsonBody = "";
    try {
        jsonBody = mapper.writeValueAsString(request);
        System.out.println("Size of json body: "   jsonBody.length());
    } catch (JsonProcessingException e) {
        System.out.println(e.getMessage());
        System.out.println("Incorrect JSON Format");
    }
    long sourceSize  = jsonBody.length();
    long fileSize = 5 * 1024 * 1024;
    long noOfFiles;

    if (sourceSize % fileSize == 0) {
        noOfFiles = sourceSize / fileSize;
    }
    else {
        noOfFiles = (sourceSize / fileSize)   1;
    }
    for (int i = 1; i <= noOfFiles; i  ) {
        
    }
 

Комментарии:

1. Должна ли конечная точка получать действительный JSON? Или вы можете отправить ему произвольные данные? Если вы можете просто разрезать его на 5 блоков, то String.substring выполнит эту работу.