【发布时间】:2020-05-18 21:30:44
【问题描述】:
今天我有一个生成文件的过程,将其写入本地磁盘,然后上传到 S3。但是现在我想改变这个过程,我想在我通过流编写它的同时上传这个文件。我正在使用 aws-java-sdk,但我没有成功实施这种方法。
简单的代码来说明我想要做什么:
for (int i = 5000; i > 0; i--) {
Upload upload;
//create temp file
File tempFile = File.createTempFile("teste", ".txt");
//write
OutputStream fos = new FileOutputStream(tempFile);
Writer osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("Test-Upload");
bw.newLine();
bw.flush();
//upload
FileInputStream fis = new FileInputStream(tempFile);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(tempFile.length());
upload = tm.upload(bucketName, key.concat(tempFile.getName()), fis, objectMetadata);
upload.waitForUploadResult();
}
今天我的平均问题是我在写入时将文件加载到内存中,并在发送到 S3 时再次加载它,我想改进这个过程,但我不知道是否是最好的方法和/或可能,因为在我的搜索中我没有找到很多这样的情况。
【问题讨论】:
标签: java spring-boot amazon-s3 design-patterns aws-sdk