我會建議使用minio-java
Java庫亞馬遜S3支持雲存儲
io.minio.MinioClient.getObject返回的InputStream[example],你可以做多getObject每個調用返回個人InputStream。
MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
InputStream stream1 = s3Client.getObject("my-bucketname", "my-objectname1");
InputStream stream2 = s3Client.getObject("my-bucketname", "my-objectname2");
這裏,這些流不被預取。如果預取是硬性要求,你可以使用GetObject的另一種變體
公共無效的getObject(字符串bucketName,字符串對象名,字符串文件名),使用這種方法的
優點是,它恢復以前的getObject(如果有的話)。
MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
s3Client.getObject("my-bucketname", "my-objectname1", "/mycachedir/my-objectname1");
s3Client.getObject("my-bucketname", "my-objectname2", "/mycachedir/my-objectname2");
感謝這個響應,但在看代碼,的getObject()的調用映射到單個HTTP GET請求:https://github.com/minio/minio-java/blob/a8c9ffa1919e47b743dffabc9eb756847016263a/src /main/java/io/minio/MinioClient.java#L487這將在AWS SDK的getObject()實現中遇到類似的魯棒性和速度限制。你提到的重載功能對於需要文件名的重載來說看起來很不錯(並且可以使事情更健壯),但理想情況下,我可以從關閉的連接中恢復,而不必將整個下載存儲在磁盤上。 –