阿里雲之對象存儲OSS

/**
 * FileName:         OSS.java
 * @Description:     TODO
 * @author:            hdg
 * @version            V1.0
 * Createdate:      2018年5月20日     下午12:43:13
 * All rights Reserved, Designed By crane-yuan
 * Modification  History:
 * Date         Author        Version        Discription
 * ---------------------------------------------------------------------------
 * 2018年5月20日          hdg            1.0             1.0

 * Why & What is modified:

 */
package oss;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.BucketInfo;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;

/**
 * @ClassName:       OSS
 * @Description:    TODO
 * @author:            hdg
 * @date:            2018年5月20日        下午12:43:13
 */
public class OSS {

    // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。
    // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」,
    // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
    // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱,
    // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。
    private static String endpoint = "*******";

    // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看,
    // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。
    // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。
    private static String accessKeyId = "******";
    private static String accessKeySecret = "******";

    // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。
    // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。
    private static String bucketName = "2018-05-20";

    // Object是OSS存儲數據的基本單元,稱爲OSS的對象,也被稱爲OSS的文件。詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。
    // Object命名規範以下:使用UTF-8編碼,長度必須在1-1023字節之間,不能以「/」或者「\」字符開頭。
    private static String firstKey = "my-first-key";

    public static void main(String[] args) {

        // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」,
        // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

        try {

            // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
            if (ossClient.doesBucketExist(bucketName)) {
                System.out.println("您已經建立Bucket:" + bucketName + "。");
            } else {
                System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。");
                // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。
                // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                ossClient.createBucket(bucketName);
            }

            // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
            BucketInfo info = ossClient.getBucketInfo(bucketName);
            System.out.println("Bucket " + bucketName + "的信息以下:");
            System.out.println("\t數據中心:" + info.getBucket().getLocation());
            System.out.println("\t建立時間:" + info.getBucket().getCreationDate());
            System.out.println("\t用戶標誌:" + info.getBucket().getOwner());

            // 把字符串存入OSS,Object的名稱爲firstKey。詳細請參看「SDK手冊 > Java-SDK > 上傳文件」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/upload_object.html?spm=5176.docoss/user_guide/upload_object
            InputStream is = new ByteArrayInputStream("Hello OSS".getBytes());
            ossClient.putObject(bucketName, firstKey, is);
            System.out.println("Object:" + firstKey + "存入OSS成功。");

            // 下載文件。詳細請參看「SDK手冊 > Java-SDK > 下載文件」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/download_object.html?spm=5176.docoss/sdk/java-sdk/manage_object
            OSSObject ossObject = ossClient.getObject(bucketName, firstKey);
            InputStream inputStream = ossObject.getObjectContent();
            StringBuilder objectContent = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            while (true) {
                String line = reader.readLine();
                if (line == null)
                    break;
                objectContent.append(line);
            }
            inputStream.close();
            System.out.println("Object:" + firstKey + "的內容是:" + objectContent);

            // 文件存儲入OSS,Object的名稱爲fileKey。詳細請參看「SDK手冊 > Java-SDK > 上傳文件」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/upload_object.html?spm=5176.docoss/user_guide/upload_object
            String fileKey = "README.md";
            ossClient.putObject(bucketName, fileKey, new File("README.md"));
            System.out.println("Object:" + fileKey + "存入OSS成功。");

            // 查看Bucket中的Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
            ObjectListing objectListing = ossClient.listObjects(bucketName);
            List<OSSObjectSummary> objectSummary = objectListing.getObjectSummaries();
            System.out.println("您有如下Object:");
            for (OSSObjectSummary object : objectSummary) {
                System.out.println("\t" + object.getKey());
            }

            // 刪除Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。
            // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
            ossClient.deleteObject(bucketName, firstKey);
            System.out.println("刪除Object:" + firstKey + "成功。");
            ossClient.deleteObject(bucketName, fileKey);
            System.out.println("刪除Object:" + fileKey + "成功。");

        } catch (OSSException oe) {
            oe.printStackTrace();
        } catch (ClientException ce) {
            ce.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ossClient.shutdown();
        }

    }

}
相關文章
相關標籤/搜索