@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

JavaでAmazon S3からファイルをダウンロードする

前回、アップロードしてみたので、今回はダウンロードしてみましょう。
AmazonS3のインスタンスを取得するまでは同じ流れになっています。
ダウンロードでは、getObject()で得られたS3Objectから、getObjectContent()にてInputStreamを取得します。
後は、このInputStreamを読み込んでしまえば良いわけですね。
簡単ですね。

public class A3Service {
    // getter setter略
    private String accessKey;
    private String secretKey;
    private String bucketName;

    public byte[] download(String fileName) {
        InputStream is = null;
        ByteArrayOutputStream os = null;
        try {
            AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
            AmazonS3 s3 = new AmazonS3Client(credentials);
            S3Object object = s3.getObject(bucketName, fileName);
            is = object.getObjectContent();
            os = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            while (true) {
                int len = is.read(buffer);
                if (len < 0) {
                    break;
                }
                os.write(buffer, 0, len);
            }
            return os.toByteArray();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            IOUtil.closeQuietly(is);
            IOUtil.closeQuietly(os);
        }
    }
}

Amazon Web Services クラウドデザインパターン 設計ガイド

Amazon Web Services クラウドデザインパターン 設計ガイド