1. 程式人生 > >【OSS】 Bucket相關操作

【OSS】 Bucket相關操作

package com.ls;

import java.util.ArrayList;
import java.util.List;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.Bucket;
import com.aliyun.oss.model.BucketList;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.ListBucketsRequest;

/** Bucket相關操作,建立,修改,刪除等
 * @author Administrator
 *
 */
public class ExampleForBucket {

	private static final String ACCESS_ID = "****************";
	private static final String ACCESS_KEY = "******************************";
	private static final String OSS_ENDPOINT = "http://oss.aliyuncs.com/";

	public static void createBucket(OSSClient client) {
		/* Bucket訪問許可權,三種:私有、公共讀、公共讀寫 */
		CannedAccessControlList acl = CannedAccessControlList.PublicReadWrite;

		/* 直接通過Bucket名稱建立 */
		String bucketName = "lonshinesaas";// Bucket名稱
		client.createBucket(bucketName);// 建立Bucket,ACL預設為私有
		client.setBucketAcl(bucketName, acl);// 設定指定Bucket的讀寫許可權Access Control
												// List(ACL)。

		/* 通過一個Bucket物件來建立 */
		CreateBucketRequest bucketObj = new CreateBucketRequest(null);// 建構函式入參為Bucket名稱,可以為空
		bucketObj.setBucketName("hzsaastest");// 設定bucketObj名稱
		bucketObj.setCannedACL(CannedAccessControlList.PublicRead);// 設定bucketObj訪問許可權acl
		client.createBucket(bucketObj);// 建立Bucket

	}

	public static void deleteBucket(OSSClient client, String bucketName) {
		
		/*判斷給定Bucket是否存在。*/
		boolean  isBucket = client.doesBucketExist(bucketName);
		if(isBucket){
			/* 通過Bucket名稱刪除 */
			client.deleteBucket(bucketName);
		}else{
			System.out.println("Bucket:"+bucketName+"不存在,無法刪除!");
		}
		
		/*
		 * 說明: 
		 * 1.Bucket不存在無法刪除:The specified bucket does not exist.
		 * 2.Bucket不為空無法刪除:The bucket you tried to delete is not empty.
		 */
	}

	public static void getBucketList(OSSClient client) {

		/* 返回請求者擁有的所有Bucket的列表。 */
		List<Bucket> list1 = new ArrayList<Bucket>();
		list1 = client.listBuckets();
		for (Bucket a : list1) {
			System.out.println("list1 info:" + a.toString());
		}
		System.out.println("----------------------------------------------------------------");

		/* 按要求返回請求者的Bucket列表。 */
		BucketList list2 = new BucketList();
		ListBucketsRequest condition = new ListBucketsRequest();
		condition.setPrefix("hz");// 限定返回的bucket name必須以prefix作為字首。不設定則返回全部
		condition.setMaxKeys(5);// 此次返回bucket的最大數,如果不設定,預設為100。
		condition.setMarker("a");// 使用者設定結果從marker之後按字母排序的第一個開始返回。
		list2 = client.listBuckets(condition);
		for (Bucket a : list2.getBucketList()) {
			System.out.println("list2 info:" + a.toString());
		}
		System.out.println("----------------------------------------------------------------");

		/* 按要求返回請求者的Bucket列表。(方法2) */
		BucketList list3 = new BucketList();
		/*
		 * 引數: prefix - 限定返回的bucket的名字必須以prefix作為字首,可以為null(表示不設定字首) 
		 *      marker - 設定結果從marker之後按字母排序的第一個開始返回,可以為null(表示沒有marker的點,從頭開始返回) 
		 *      maxKeys- 限定此次返回bucket的最大數,取值不能大於1000,預設為100,可以為null(表示預設返回最多100個)
		 */
		list3 = client.listBuckets("s", null, 1);
		for (Bucket a : list3.getBucketList()) {
			System.out.println("list3 info:" + a.toString());
		}

	}

	public static void main(String[] args) {

		// 初始化OSS客戶端
		OSSClient client = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY);

		createBucket(client);

		deleteBucket(client,"saas01");
		deleteBucket(client,"saas02");
		deleteBucket(client,"saas03");

		getBucketList(client);

		System.out.println("OK");
		
		//關閉
		client.shutdown();

	}

}