【发布时间】:2021-05-27 05:08:15
【问题描述】:
我在 S3 存储桶中有 tar 文件,我正在尝试将它们解压到另一个 s3 存储桶中。 到目前为止,我得到了 destBucket 中的所有文件,但似乎 putObject 使文件损坏或为空。如何读取整个文件并将整个缓冲写入 putObject ?
这里是我使用的代码:
TarArchiveInputStream tarInputStream = new TarArchiveInputStream(new BufferedInputStream(objectData));
TarArchiveEntry currentEntry;
while ((currentEntry = tarInputStream.getNextTarEntry()) != null) {
if (!currentEntry.isDirectory()) {
byte[] objectBytes = new byte[currentEntry.getSize()];
tarInputStream.read(objectBytes);
def entryName = currentEntry.getName()
def fileN = entryName.substring(entryName.lastIndexOf("/") + 1, entryName.length())
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(objectBytes.length);
metadata.setContentType("application/octet-stream");
s3Client.putObject(destbucket, packagePath + "untar_frames/" + fileN,
new ByteArrayInputStream(objectBytes), metadata);
}
}
【问题讨论】:
标签: java amazon-web-services amazon-s3 byte inputstream