通过使用Java+SDK管理华为云对象存储OBS,了解对象存储的基本原理和操作,熟悉SDK的使用方法,为后续需要开发复杂功能提供入门准备。
1、电脑上安装Java开发环境+Eclipse,可参考网上的教程:
Java安装教程:http://www.runoob.com/java/java-environment-setup.html#win-install
Eclipse+汉化教程:https://blog.csdn.net/weixin_41848531/article/details/81736414
2、下载华为云OBS SDK(https://developer.huaweicloud.com/sdk?OBS),笔者编辑本文时,最新版本是OBS Java SDK 3.0.0 ,SDK安装过程如下:
a.下载OBS Java SDK开发包。
b. 在Eclipse中创建一个Java工程
b. 将解压后的文件:esdk-obs-java-
c. 在Eclipse中选择您的工程,右击选择 Properties > Java Build Path > Add JARs。
3、下载OBS的访问密钥key文件。
a. 登陆华为云网站(www.huaweicloud.com),进入OBS控制台,下载访问密钥。
密钥key是一个xxx.csv的表格文件,其中Access Key Id对应OBS API中的ak,Secret Access Key对应OBS API中的sk。
密钥key的作用:
通过网站访问对象存储OBS,需要先通过账号密码登陆网站。通过代码访问OBS,如果也需要输入账号密码,就会使得的代码变复杂。因此密钥key可以认为是经过加密的账号和密码,代码中可直接使用。 密钥key文件只在生成的时候提供下载,因此下载后需妥善保存。
4、打开JDK包中的开发指南《对象存储Java SDK开发指南.doc》内含丰富的说明。
1、在eclipse工程中左侧工具栏中找到自动生成的xxx.java,编写一个java类,输出欢迎语句。点击eclispe工具栏上的 调试或运行按钮,在结果中可看到欢迎语句。
package main;
import java.io.*;
import java.io.IOException;
public class main {
public static void main(String[] args)
{
System.out.println("welcome to china!!!");
}
}
2、创建一个OBS客户端。电脑是访问OBS的客户端,华为云的OBS是服务器。
2.1 公有云的数据中心是分区域的,每个OBS访问地址都是通过“后缀endpoint”来指定数据是存放在哪个区域的数据中心的。
“后缀endpoint”的查询地址:https://developer.huaweicloud.com/endpoint
2.2 创建一个OBS客户端
新增导入OBS相关库文件,并在main函数中添加OBS客户端的打开和关闭操作。
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;
String endPoint = "https://yourdomainname";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 关闭obsClient
obsClient.close();
3.3 参考《对象存储服务Java SDK开发指南.doc》分别编辑创建桶、上传对象和查看所有对象,具体代码参考后续完整代码。
3.4 点击eclipse的调试或运行按钮,在控制台中显示创建桶成功,显示所有对象成功。
控制台中提示日志插件和性能统计错误,不影响功能,可忽略不计。
3.5 在华为云OBS 对象存储控制台中,可看到新增生成的桶和上传的文件。
package main;
import java.io.*;
import java.io.IOException;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;
public class main {
/* 初始化OBS客户端所需的参数 */
private static final String endPoint = "https://your endpoint";
private static final String ak = "your ak";
private static final String sk = "your sk";
private static final String g_bucketName = "hello-obs-demo";
private static final String g_bucketLoc = "cn-south-1";
public static void main(String[] args)
{
System.out.println("welcome to china!!!");
/* 创建OBS客户端 */
ObsClient obsClient = new ObsClient(ak,sk,endPoint);
ObsBucket obsBucket;
try
{
/* 创建一个桶 */
obsBucket = createBucket(obsClient);
/* 从本地笔记本上传文件到桶里面 */
uploadFile(obsClient, obsBucket);
/* 列举对象(文件)的信息 */
listFile(obsClient,obsBucket);
/* 关闭客户端 */
}
catch (ObsException e)
{
System.out.println("main 函数出现错误!!!");
}
/* 关闭obs客户端 */
closeObsClient(obsClient);
}
/* 创建一个桶 */
private static ObsBucket createBucket(ObsClient obsClient) throws ObsException
{
ObsBucket obsBucket = new ObsBucket(g_bucketName,g_bucketLoc);
obsClient.createBucket(obsBucket);
System.out.println("Create bucket:" + g_bucketName + " successfully!");
return obsBucket;
}
/* 创建一个对象(文件) */
private static void uploadFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
{
File newfile = new File("C:\\Users\\xiaoniu\\Desktop\\temp\\hello.txt");
obsClient.putObject(obsBucket.getBucketName(), "folder/", newfile);
obsClient.putObject(obsBucket.getBucketName(), "hello1", newfile);
obsClient.putObject(obsBucket.getBucketName(), "hello2", newfile);
}
/* 列举对象(文件)的信息 */
private static void listFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
{
System.out.println("开始测试桶里面的对象信息");
ObjectListing objList = obsClient.listObjects(obsBucket.getBucketName());
for (ObsObject obj : objList.getObjects())
{
System.out.println("--:"+obj.getObjectKey()+" (size=" + obj.getMetadata().getContentLength()+")");
}
}
/* 关闭客户端 */
private static void closeObsClient(ObsClient obsClient)
{
try
{
obsClient.close();
}
catch (IOException e)
{
System.out.println("close obs client error.");
}
}
}