我们正在使用适用于 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/