[英]Get InputStream out of TarArchiveInputStream
我正在從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());
}
}
我嘗試使用new FileInputStream(entry.getFile())
直接保存entry
但這返回null。
我需要制作一個saveTarStreamToS3()
還是可以從TarArchiveInputStream中制作一個InputStream?
FileInputStream僅讀取真實文件。 它不會從存檔內部讀取數據。
有兩種可能的解決方案
InputStream
接口InputStream
的目的是讓您無需知道數據來自何處,這是解決此問題的自然方法。
我可以用TarArchiveInputStream制作InputStream嗎
TarArchiveInputStream實現InputStream,因此無需執行任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.