java - AmazonS3Client.putObject with File 保持对文件的打开引用

标签 java aws-sdk

我们正在使用适用于 Java 的 AWS SDK S3 版本 2.4.2。当我们尝试为具有单个连接的多个文件放置对象 (s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).build(), Paths.get(file));) 时,它是上传数千个文件后,由于“打开的文件太多”问题而失败。当我们使用带有进程ID的“pfiles”命令 checkin unix机器时,它永远不会关闭文件引用,直到应用程序完成/终止。

最佳答案

最后,我们最终使用了带有字节数组的文件输入流,并从我们的程序中手动关闭:

FileInputStream fis = new FileInputStream(file);
byte[] data = IoUtils.toByteArray(fis);
s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).build(), RequestBody.fromBytes(data));
data = null; 
fis.close();

关于java - AmazonS3Client.putObject with File 保持对文件的打开引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54778639/

相关文章:

aws-sdk - 是否可以每秒从 AWS 负载均衡器获取请求?

amazon-web-services - 无法通过 AWS CLI 或 AWS SDK 访问 Amazon SQS

java - 如何改变图像的亮度

java - axis2 (1.3) 客户端问题

java - 在JAVA中使用ANTLR从字符串中获取表达式

node.js - AWS Lambda 使用 s3 getObject 函数没有任何反应

java - Android在线程上保持套接字连接打开

java - Spark - 如何为每个执行器上下文创建不同的变量?

c++ - 无法在 AWS C++ SDK 中设置区域

ios - AWSFirehoseRecorder saveRecord 似乎从不保存任何记录