Я получаю файлы с FTP.Файлы, которые я получаю, это либо текстовые файлы, либо tar.gz
. Для текстовых файлов я просто отправляю их на S3.Если я сталкиваюсь с tar.gz, я хочу распаковать его и сохранить каждый файл одним и тем же методом.
public void handleFile() {
try (InputStream fileStream = ftpFileService.getInputStream(file)) {
if (file.getName().lastIndexOf(".TGZ") > -1) {
TarArchiveInputStream tar = new TarArchiveInputStream(new GzipCompressorInputStream(fileStream));
TarArchiveEntry entry = null;
while ((entry = tar.getNextTarEntry()) != null) {
LOGGER.info("fileName to save {}", entry.getName());
saveStreamToS3(entry.getName(), new InputStream(tar));
}
tar.close();
} else {
LOGGER.info("fileName to save {}", fileName.getName());
saveStreamToS3(fileName.getName(), fileStream);
}
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
}
Я попытался сохранить entry
напрямую, используя new FileInputStream(entry.getFile())
, но это возвращает ноль.
Нужно ли сделать saveTarStreamToS3()
или я могу создать InputStream из TarArchiveInputStream?