将开发工具包与 Gradle 一起使用,要在 Gradle 项目中使用适用于 Java 的 AWS 开发工具包,请使用 Spring 的适用于 Gradle 的依赖项管理插件,使用该插件,可以导入开发工具包的 Maven 材料清单 (BOM) 以管理项目的开发工具包依赖项,配置适用于 Gradle 的开发工具包。
1.向 build.gradle 文件中添加依赖项管理插件
apply plugin: "io.spring.dependency-management"
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:1.0.0.RC2"
}
}
//将 BOM 添加到该文件的 dependencyManagement 部分
dependencyManagement {
imports {
mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.161'
}
}
//在依赖项部分中指定您将使用的开发工具包模块
dependencies {
compile 'com.amazonaws:aws-java-sdk-s3'
}
Gradle 将自动使用 BOM 中的信息来解析开发工具包依赖项的正确版本。
2.然后下面是java代码:
import com.amazonaws.AmazonServiceException; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Paths; import java.util.Iterator; import java.util.List; /** * SDK接口方法 * Created by wangwl on 2017/7/13. */ public class S3SDKClientTest { public static void main(String[] args) { } /** * ########################################## * bucket的操作 * ########################################## */ /** * 获取bucket * @param bucket_name * @return */ public static Bucket getBucket(String bucket_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); Bucket named_bucket = null; List<Bucket> buckets = s3.listBuckets(); for (Bucket b : buckets) { if (b.getName().equals(bucket_name)) { named_bucket = b; } } return named_bucket; } /** * 创建bucket * @param bucket_name * @return */ public static Bucket createBucket(String bucket_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); Bucket b = null; if (s3.doesBucketExist(bucket_name)) { System.out.format("Bucket %s already exists.\n", bucket_name); b = getBucket(bucket_name); } else { try { b = s3.createBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } return b; } /** * 列出所有的buckets * @return */ public static List<Bucket> listBuckets() { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); List<Bucket> buckets = s3.listBuckets(); System.out.println("Your Amazon S3 buckets:"); for (Bucket b2 : buckets) { System.out.println("* " + b2.getName()); } return buckets; } /** * 删除不受版本控制的存储桶之前从中删除对象. * 要在删除不受版本控制的存储桶之前从中删除对象, * 可以使用 AmazonS3 客户端的 listObjects 方法检索对象列表,使用 deleteObject 删除各个对象。 * @param bucket_name */ public static void deleteObjectsNoVersion(String bucket_name){ final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { System.out.println(" - removing objects from bucket"); //获取该bucket下的所有对象 ObjectListing object_listing = s3.listObjects(bucket_name); while (true) { for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext();) { S3ObjectSummary summary = (S3ObjectSummary)iterator.next(); s3.deleteObject(bucket_name, summary.getKey()); } // more object_listing to retrieve? if (object_listing.isTruncated()) { object_listing = s3.listNextBatchOfObjects(object_listing); } else { break; } }; } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * 删除受版本控制的存储桶之前从中删除对象 * 如果您使用受版本控制的存储桶,还需要先删除存储桶中存储的所有受版本控制对象,然后才能删除存储桶。 * 使用在删除存储桶中对象时使用的相似方法,通过使用 AmazonS3 客户端的 listVersions 方法列出所有受版本控制的对象, * 然后使用 deleteVersion 删除各个对象。 * @param bucket_name */ public static void deleteObjectsVersion(String bucket_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { System.out.println(" - removing objects from bucket"); ObjectListing object_listing = s3.listObjects(bucket_name); while (true) { for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext();) { S3ObjectSummary summary = (S3ObjectSummary)iterator.next(); s3.deleteObject(bucket_name, summary.getKey()); } // more object_listing to retrieve? if (object_listing.isTruncated()) { object_listing = s3.listNextBatchOfObjects(object_listing); } else { break; } }; System.out.println(" - removing versions from bucket"); VersionListing version_listing = s3.listVersions( new ListVersionsRequest().withBucketName(bucket_name)); while (true) { for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext();) { S3VersionSummary vs = (S3VersionSummary)iterator.next(); s3.deleteVersion(bucket_name, vs.getKey(), vs.getVersionId()); } if (version_listing.isTruncated()) { version_listing = s3.listNextBatchOfVersions(version_listing); } else { break; } } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * 删除一个空的bucket * @param bucket_name */ public static void deleteEmptyBucket(String bucket_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { s3.deleteBucket(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * ########################################## * object的操作 * ########################################## */ /** * 上传对象到bucket * @param bucket_name * @param file_path 文件对象路径 */ public static void putObject(String bucket_name, String file_path) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); String key_name = Paths.get(file_path).getFileName().toString(); try { s3.putObject(bucket_name, key_name, new java.io.File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * 列出bucket里的所有对象。 * listObjects 方法返回一个 ObjectListing 对象,该对象提供有关存储桶中对象的信息。 * @param bucket_name */ public static void listObjects(String bucket_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); ObjectListing ol = s3.listObjects(bucket_name); //使用 getObjectSummaries 方法获取 S3ObjectSummary 对象的列表 List<S3ObjectSummary> objects = ol.getObjectSummaries(); for (S3ObjectSummary os: objects) { //调用其 getKey 方法以检索对象名称 System.out.println("*对象名称: " + os.getKey()); } } /** * 下载对象 * 使用 AmazonS3 客户端的 getObject 方法,并向其传递要下载的存储桶和对象的名称。 * 如果成功,此方法将返回一个 S3Object。指定的存储桶和对象键必须存在,否则将出现错误。 * @param bucket_name * @param key_name 对象的名称 */ public static void getObject(String bucket_name, String key_name) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { S3Object o = s3.getObject(bucket_name, key_name); //获取对象的内容,返回一个 S3ObjectInputStream,其行为与标准 Java InputStream 对象的相同 S3ObjectInputStream s3is = o.getObjectContent(); //定义一个对象输出的文件 FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } /** * 复制对象(从一个bucket到另一个bucket)。 * 您可以将 copyObject 与 deleteObject 配合使用来移动或重命名对象, * 方式是先将对象复制到新名称 (您可以使用与源和目标相同的存储桶),然后从对象的旧位置删除对象。 * @param from_bucket * @param object_key 对象的名称 * @param to_bucket */ public static void copyObject(String from_bucket, String object_key, String to_bucket) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * 删除对象 * @param bucket_name * @param object_key 对象的名称 */ public static void deleteObject(String bucket_name, String object_key) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } /** * 批量删除对象 * @param bucket_name * @param object_keys 对象名称的数组 */ public static void deleteObjects(String bucket_name, String object_keys) { final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name).withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } }
参考Amazon web services官网:http://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/examples-s3-buckets.html
参考Amazon web services官网:http://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/examples-s3-buckets.html
参考Amazon web services官网:http://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/examples-s3-buckets.html