本節介紹如何快速使用OSS Java SDK完成常見操作,如建立儲存空間、上傳檔案、下載檔案等。
樣本工程
OSS Java SDK提供了基於Maven和Ant的樣本工程。您可以在本地裝置上編譯和運行樣本工程,也可以以樣本工程為基礎開發您的應用。工程的編譯和運行方法,請參見工程目錄下的README.md。
- Maven樣本工程:aliyun-oss-java-sdk-demo-mvn.zip
- Ant樣本工程:aliyun-oss-java-sdk-demo-ant.zip
建立儲存空間
儲存空間是OSS全域命名空間,相當於資料的容器,可以儲存若干檔案。以下代碼用於新建一個儲存空間:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 建立儲存空間。
ossClient.createBucket(bucketName);
// 關閉OSSClient。
ossClient.shutdown();
儲存空間的命名規範,請參見基本概念中的命名規範。建立儲存空間詳情,請參見管理儲存空間。
上傳檔案
以下代碼用於上傳檔案至OSS:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上傳檔案。
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
// 關閉OSSClient。
ossClient.shutdown();
上傳檔案詳情請參見上傳檔案。
下載檔案
以下代碼用於獲取檔案的常值內容:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 調用ossClient.getObject返回一個OSSObject執行個體,該執行個體包含檔案內容及檔案元資訊。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 調用ossObject.getObjectContent獲取檔案輸入資料流,可讀取此輸入資料流獲取其內容。
InputStream content = ossObject.getObjectContent();
if (content != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("\n" + line);
}
// 資料讀取完成後,獲取的流必須關閉,否則會造成連接泄漏,導致請求無連接可用,程式無法正常工作。
content.close();
}
// 關閉OSSClient。
ossClient.shutdown();
下載檔案詳情請參見下載檔案。
列舉檔案
以下代碼用於列舉指定儲存空間下的檔案。預設列舉100個檔案。
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// ossClient.listObjects返回ObjectListing執行個體,包含此次listObject請求的返回結果。
ObjectListing objectListing = ossClient.listObjects(bucketName);
// objectListing.getObjectSummaries獲取所有檔案的描述資訊。
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " " +
"(size = " + objectSummary.getSize() + ")");
}
// 關閉OSSClient。
ossClient.shutdown();
列舉功能詳情請參見管理檔案中的列出儲存空間中的檔案。
刪除檔案
以下代碼用於刪除指定檔案:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 刪除檔案。
ossClient.deleteObject(bucketName, objectName);
// 關閉OSSClient。
ossClient.shutdown();