使用java实现腾讯云存储服务(COSClient)
时间:2018-12-17
本文章向大家介绍使用java实现腾讯云存储服务(COSClient),主要包括使用java实现腾讯云存储服务(COSClient)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天的项目需要用腾讯云来做云存储服务,刚开始一头雾水,后来看了Java的API文档和SDK文档才慢慢有个了解,这次作下记录,方便以后查看。
本地环境依赖
SDK 支持 JDK 1.7, 1.8 及以上版本。
安装 SDK(maven 安装)
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.4.6</version>
</dependency>
注册好腾讯云账号,在腾讯云上复制这四个在代码里替换即可,ACCESSKEY,SECRETKEY,APPID,REGIONID
创建存储桶
上传上来的文件
初始化密钥信息
private static final String ACCESSKEY = "XXXXXX";
private static final String SECRETKEY = "XXXXXX";
private static final String BUCKETNAME = "XXXXXX-12517827811";
private static final String APPID = "12517827811 ";
private static final String REGIONID = "ap-guangzhou";
private static final String KEY="MyFile1/zookeeper-3.4.8.tar.gz";
private static final String KEY01="MyFile1/1.jpg";
初始化客户端
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(ACCESSKEY, SECRETKEY);
// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
// clientConfig中包含了设置region, https(默认http), 超时, 代理等set方法, 使用可参见源码或者接口文档FAQ中说明
ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
// 3 生成cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
Java代码(在main函数里可以测试,不过都被我注释掉了)
/**
* @Author: SunJunxian
* @Date: 2018/12/17
* @Description: java实现腾讯云存储服务(COSClient)
* @REGIONID 区域
* @KEY 上传上云之后的名字
* @KEY01 需要删除的文件
*/
public class CosClientTest {
private static final String ACCESSKEY = "XXXXXX";
private static final String SECRETKEY = "XXXXXX";
private static final String BUCKETNAME = "XXXXXX-12517827811";
private static final String APPID = "12517827811";
private static final String REGIONID = "ap-guangzhou";
private static final String KEY="MyFile1/zookeeper-3.4.8.tar.gz";
private static final String KEY01="MyFile1/1.jpg";
/**
* 初始化CosClient相关配置, appid、accessKey、secretKey、region
* @return
*/
public static COSClient getCosClient() {
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(ACCESSKEY, SECRETKEY);
// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
// clientConfig中包含了设置region, https(默认http), 超时, 代理等set方法, 使用可参见源码或者接口文档FAQ中说明
ClientConfig clientConfig = new ClientConfig(new Region(REGIONID));
// 3 生成cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
//String bucketName = BUCKETNAME;
return cosClient;
}
/**
* 上传文件
* @return
* //绝对路径和相对路径都OK
*/
public static String uploadFile() {
// File localFile = new File("E:\\software\\JavaProject\\demo\\demo20\\src\\main\\resources\\1.jpg");
File localFile = new File("E:\\software\\zookeeper-3.4.8.tar.gz");
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, KEY, localFile);
// 设置存储类型, 默认是标准(Standard), 低频(standard_ia),一般为标准的
putObjectRequest.setStorageClass(StorageClass.Standard);
COSClient cc = getCosClient();
try {
PutObjectResult putObjectResult = cc.putObject(putObjectRequest);
// putobjectResult会返回文件的etag
String etag = putObjectResult.getETag();
System.out.println(etag);
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
// 关闭客户端
cc.shutdown();
return null;
}
/**
* 下载文件
* @param bucketName
* @param key
* @return
*/
public static String downLoadFile(String bucketName, String key) {
File downFile = new File("E:\\software\\1.jpg");
COSClient cc = getCosClient();
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = cc.getObject(getObjectRequest, downFile);
cc.shutdown();
String etag = downObjectMeta.getETag();
return etag;
}
/**
* 删除文件
* @param bucketName
* @param key
*/
public static void deleteFile(String bucketName, String key) {
COSClient cc = getCosClient();
try {
cc.deleteObject(bucketName, key);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
cc.shutdown();
}
}
/**
* 创建桶
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static Bucket createBucket(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
Bucket bucket = null;
try {
bucket = cc.createBucket(bucketName);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
}
return bucket;
};
/**
* 删除桶
* @param bucketName
* @throws CosClientException
* @throws CosServiceException
*/
public void deleteBucket(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
try {
cc.deleteBucket(bucketName);
} catch (CosClientException e) {
e.printStackTrace();
} finally {
}
};
/**
* 判断桶是否存在
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static boolean doesBucketExist(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
boolean bucketExistFlag = cc.doesBucketExist(bucketName);
return bucketExistFlag;
};
/**
* 查看桶文件
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static ObjectListing listObjects(String bucketName) throws CosClientException, CosServiceException {
COSClient cc = getCosClient();
// 获取 bucket 下成员(设置 delimiter)
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName(bucketName);
// 设置 list 的 prefix, 表示 list 出来的文件 key 都是以这个 prefix 开始
listObjectsRequest.setPrefix("");
// 设置 delimiter 为/, 即获取的是直接成员,不包含目录下的递归子成员
listObjectsRequest.setDelimiter("/");
// 设置 marker, (marker 由上一次 list 获取到, 或者第一次 list marker 为空)
listObjectsRequest.setMarker("");
// 设置最多 list 100 个成员,(如果不设置, 默认为 1000 个,最大允许一次 list 1000 个 key)
listObjectsRequest.setMaxKeys(100);
ObjectListing objectListing = cc.listObjects(listObjectsRequest);
// 获取下次 list 的 marker
String nextMarker = objectListing.getNextMarker();
// 判断是否已经 list 完, 如果 list 结束, 则 isTruncated 为 false, 否则为 true
boolean isTruncated = objectListing.isTruncated();
List<COSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
for (COSObjectSummary cosObjectSummary : objectSummaries) {
// get file path
String key = cosObjectSummary.getKey();
// get file length
long fileSize = cosObjectSummary.getSize();
// get file etag
String eTag = cosObjectSummary.getETag();
// get last modify time
Date lastModified = cosObjectSummary.getLastModified();
// get file save type
String StorageClassStr = cosObjectSummary.getStorageClass();
}
return objectListing;
}
/**
*查询一个 Bucket 所在的 Region。
* @param bucketName
* @return
* @throws CosClientException
* @throws CosServiceException
*/
public static String getBucketLocation(String bucketName) throws CosClientException , CosServiceException{
COSClient cosClient = getCosClient();
// bucket 的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
String location = cosClient.getBucketLocation(bucketName);
return location;
}
public static void main(String[] args) {
// uploadFile();
// downLoadFile(BUCKETNAME , KEY);
// deleteFile(BUCKETNAME , KEY01);
// createBucket("sunjunxian01-1251782781");
//deleteBucket();
// doesBucketExist("sunjunxian01-1251782781");
// System.out.println(listObjects(BUCKETNAME));
//System.out.println("BUCKETNAME的位置:" + getBucketLocation(BUCKETNAME));
}
}
- 同步一个数据库要发多少个数据包?
- BP神经网络识别性别
- 为or、in平反——or、in到底能不能利用索引?
- BP神经网络续1
- 隐藏在程序旮旯中的“安全问题”
- SQLSERVER 占了500多M内存,原来的程序无法一次查询出50多W数据了,记录下这个问题的解决过程。
- 能自己“跑”的表单控件,思路,雏形,源码。vs2005版本
- 在SQLMAP中使用动态SQL
- 使用OQL“语言”构造ORM实体类的复杂查询条件
- AdoHelper使用MySQL存储过程示例
- 使用8位字节的编码格式将字节流安全的转换成String
- 同样的SQL语句在查询分析器执行很快,但是网站上执行超时的诡异问题
- PDF.NET数据开发框架操作MySQL实体类操作实例
- 使用PDF.NET数据开发框架的实体操作语言OQL构造复杂查询条件
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 绘制散点图(克利夫兰系列)
- 绘制分组散点图(克里夫兰点图)
- ggplot2绘制玫瑰图
- 绘制极坐标系条形图
- 四步重新认识冗余机器人的控制器设计
- 人脸识别接入常见问题汇总
- TKE上关于postStart 和preStop使用
- 文字识别接入常见问题
- 从 1 到 0 构建博客项目(2) -- 操作系统篇(2)--定制Centos
- 使用Angular依赖注入自定义SAP Spartacus的ProductAdapter
- 获取SAP Spartacus当前显示产品json数据的又一办法
- SAP Spartacus注入自定义的CurrentProductService
- Redis系列(十三)应用之分布式锁
- Oracle数据库 sql条件查询语句与练习
- (六)Hive优化