Сохранение файла частями

Добрый день.
Появилась необходимость записывать данные в файл по частям. Хотел использовать механизм, который используется при сохранении файла с помощью fileDescriptor’а.

Для записи файла целиком использовал вот этот код:
fileLoader.saveStream(fileDescriptor, () -> new ByteArrayInputStream(data));

Возможно ли записывать файл частично? Допустим выгрузил часть данных, записал на диск и так далее.

Кажется нашел. Пришлось с помощью FileUploadingAPI создать tmp файл и в него писать, а потом с помощью putFileIntoStorage() записывать в хранилище.

    //Создаем файл
    FileUploadingAPI.FileInfo fileInfo = fileUploadingAPI.createFile();
    UUID tempFileId = fileInfo.getId();
    File tmpFile = fileInfo.getFile();

    try (FileWriter fileWriter = new FileWriter(tmpFile)) {
        // В цикле загружаю данные и записываю сразу в tmp Файл
        fileWriter.write(data);
    }

    fileUploadingAPI.putFileIntoStorage(tempFileId, fileDescriptor);

Чтобы данные сохранялись частями, нужно использовать классы InputStream и OutputStream (и их разнообразные наследники).
В первом вашем примере кода проблема в том, что у вас уже есть в памяти готовый byte[], полностью загруженный в память.

Так как вы не дали информацию, каким образом вы получаете данные, то нельзя посоветовать что-то конкретное.

3 симпатии