系列导航

一、swift对象存储环境搭建

二、swift添加存储策略

三、swift大对象--动态大对象

四、swift大对象--静态态大对象

五、java操作swift对象存储(官网样例)

六、java操作swift对象存储(resultful方式实现)

七、java操作swift对象存储(动态大对象)

八、java操作swift对象存储(静态大对象)

swift的官方提供了一些java操作swift对象存储的操作方法,但是内容比较简单稍微复杂的没有找到合适的样例,后面我会使用http请求的方式实现

一、jar包

org-json.jar 需要使用maven的同学们自己找到依赖转换一下就可以

二、基础方法

package base;

//官网的操作样例
import org.javaswift.joss.client.core.ContainerPaginationMap;
import org.javaswift.joss.client.factory.AccountConfig;
import org.javaswift.joss.client.factory.AccountFactory;
import org.javaswift.joss.client.factory.AuthenticationMethod;
import org.javaswift.joss.model.Account;
import org.javaswift.joss.model.Container;
import org.javaswift.joss.model.PaginationMap;
import org.javaswift.joss.model.StoredObject;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap; public class SwiftClientWork {
private static final String module = SwiftClientWork.class.getName(); static String authurl = "http://192.168.0.1:8080/auth/v1.0";
static String username = "admin:admin";
static String password = "admin"; /**
* 身份证存储容器
*/
static Account account ; private static SwiftClientWork instance = null; public static synchronized SwiftClientWork getInstance(){
if(instance==null){
instance = new SwiftClientWork();
}
return instance;
} static {
try{
AccountConfig config = new AccountConfig();
config.setUsername(username);
config.setPassword(password);
config.setAuthUrl(authurl); config.setAuthenticationMethod(AuthenticationMethod.BASIC);
account = new AccountFactory(config).createAccount();
}catch (Exception e){
e.printStackTrace();
}
} //给账户设置Temp-Url-Key
public void setTempUrlKey(String key){
account.setAndSaveMetadata("Temp-Url-Key", key);
System.out.println(account.getMetadata());
} /**
* CREATE A CONTAINER
* @param containerName
*/
public void createContainer(String containerName){
try{
Container container = account.getContainer(containerName);
container.create();
}catch (Exception e){
e.printStackTrace();
}
} /**
* DELETE A CONTAINER
* @param containerName
*/
public void deleteContainer(String containerName){
try{
Container container = account.getContainer(containerName);
container.delete();
}catch (Exception e){
e.printStackTrace();
}
} /**
* CREATE AN OBJECT
* @param containerName
* @param objectName
* @param inFilePath
*/
public StoredObject createObject(String containerName, String objectName, String inFilePath){
try{
/**
StoredObject object = container.getObject("dog.png");
object.uploadObject(new File("/dog.png"));
System.out.println("Public URL: "+object.getPublicURL());
*/
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(new File(inFilePath));
/*InputStream input = new FileInputStream(new File(inFilePath));
object.uploadObject(input);
input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
*
* @param containerName
* @param objectName
* @param inFile
* @return
*/
public StoredObject createObject(String containerName, String objectName, File inFile){
try{
/**
StoredObject object = container.getObject("dog.png");
object.uploadObject(new File("/dog.png"));
System.out.println("Public URL: "+object.getPublicURL());
*/
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(inFile);
/*InputStream input = new FileInputStream(new File(inFilePath));
object.uploadObject(input);
input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* ADD/UPDATE OBJECT METADATA
* @param containerName
* @param objectName
* @param metadatas
*/
public void addOrUpdateObjectMetadata(String containerName, String objectName, Map<String, Object> metadatas){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> metadata = new TreeMap<String, Object>(); for(String key: metadatas.keySet()){
String value = metadatas.get(key).toString();
System.out.println("key:"+key+" vlaue:"+value); metadata.put(key, value);
} //Map<String, Object> metadata = new TreeMap<String, Object>();
//metadata.put("key", "value");
object.setMetadata(metadata);
}catch (Exception e){
e.printStackTrace();
}
} //上传一个带属性值的对象
public StoredObject createObjectWithMetadata(String containerName, String objectName, String inFilePath, Map<String, Object> metadatas){
try{ Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.uploadObject(new File(inFilePath)); Map<String, Object> metadata = new TreeMap<String, Object>();
for(String key: metadatas.keySet()){
String value = metadatas.get(key).toString();
System.out.println("key:"+key+" vlaue:"+value);
metadata.put(key, value);
}
object.setMetadata(metadata); return object;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST OWNED CONTAINERS
*/
public Collection<Container> containerList(){
try{
Collection<Container> containers = account.list();
for (Container currentContainer : containers) {
System.out.println(currentContainer.getName());
} return containers;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST A CONTAINER’S CONTENT
* @param containerName
* @return
*/
public Collection<StoredObject> containerObjects(String containerName){
try{
Container container = account.getContainer(containerName);
Collection<StoredObject> objects = container.list();
for (StoredObject currentObject : objects) {
System.out.println(currentObject.getName());
} return objects;
}catch (Exception e){
e.printStackTrace();
}
return null;
} /**
* LIST A CONTAINER’S CONTENT
* @param containerName
* @param prefix
* @param pageSize
* @return
*/
public void containerObjectsPage(String containerName,String prefix,int pageSize){
try{
Container container = account.getContainer(containerName); //ContainerPaginationMap(Container container, String prefix, Integer pageSize)
PaginationMap paginationMap = new ContainerPaginationMap(container,prefix,pageSize); //list(PaginationMap paginationMap, int page)
//Returns a number equal to pageSize of Container elements, starting with the first element after the Container named the same as marker.
//后面这个参数经过测试不起任何作用
Collection<StoredObject> objects =container.list(paginationMap,50000); for (StoredObject currentObject : objects) {
System.out.println(currentObject.getName());
} /* Iterator iter = container.list(paginationMap,1).iterator();
while(iter.hasNext()){
StoredObject object = (StoredObject) iter.next();
String fileName = object.getName();
System.out.println(fileName);
}
*/ }catch (Exception e){
e.printStackTrace();
} } public Map getObjectMetadaTest(String containerName, String objectName) {
try {
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> returnedMetadata = object.getMetadata();
// for (String name : returnedMetadata.keySet()) {
// System.out.println("META / " + name + ": " + returnedMetadata.get(name));
// }
return returnedMetadata;
} catch (Exception e) {
System.out.println("该对象没有元数据属性------------->");
//e.printStackTrace();
}
return null;
} /**
* RETRIEVE AN OBJECT’S METADATA
* @param containerName
* @param objectName
*/
public void getObjectMetada(String containerName, String objectName){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
Map<String, Object> returnedMetadata = object.getMetadata();
for (String name : returnedMetadata.keySet()) {
System.out.println("META / "+name+": "+returnedMetadata.get(name));
}
}catch (Exception e){
e.printStackTrace();
}
} /**
* RETRIEVE AN OBJECT
* @param containerName
* @param objectName
* @param downPath
*/
public void getObject(String containerName, String objectName, String downPath){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.downloadObject(new File(downPath)); /*System.out.println("Public URL: "+object.getPublicURL());
System.out.println("Last modified: "+object.getLastModified());
System.out.println("ETag: "+object.getEtag());
System.out.println("Content type: "+object.getContentType());
System.out.println("Content length: "+object.getContentLength());*/
}catch (Exception e){
e.printStackTrace();
}
} /**
* DELETE AN OBJECT
* @param containerName
* @param objectName
*/
public void deleteObject(String containerName, String objectName){
try{
Container container = account.getContainer(containerName);
StoredObject object = container.getObject(objectName);
object.delete();
}catch (Exception e){
e.printStackTrace();
}
} //获取get权限的tempurl
//second 有效时间 单位秒
public void getObjectGetTempUrl(String containerName, String objectName,int second ){
try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName);
String url=object.getTempGetUrl(second); url = url +"&inline";
System.out.println(url); }catch (Exception e){
e.printStackTrace();
}
} //获取put权限的tempurl
//second 有效时间 单位秒
public void getObjectPutTempUrl(String containerName, String objectName,int second ){
try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName);
String url=object.getTempPutUrl(second); url = url +"&inline";
System.out.println(url); }catch (Exception e){
e.printStackTrace();
}
} }

三、调用的主方法

package mian;

import java.io.File;
import java.util.HashMap;
import java.util.Map; import org.javaswift.joss.model.Container;
import org.javaswift.joss.model.StoredObject; import base.SwiftClientWork; //官网操作swift 调用
public class SwiftClientWorkMain { /**
* @param args
*/
public static void main(String[] args) {
SwiftClientWork swiftClientWork = new SwiftClientWork(); //创建容器
swiftClientWork.createContainer("Container1"); //删除容器
swiftClientWork.deleteContainer("Container1"); //上传对象(本地文件路径上传)
swiftClientWork.createObject("Container1", "1.zip", "E://1//1.zip"); //上传对象(本地文件路径上传)
File file = new File("E://1//1.zip");
swiftClientWork.createObject("Container1", "2.zip", file); //给现有的对象增加后者更新属性
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "123123123");
swiftClientWork.addOrUpdateObjectMetadata( "Container1","2.zip", map); //上传一个带属性值的对象
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "123123123");
swiftClientWork.createObjectWithMetadata("Container1","3.zip", "E://1//1.zip" ,map ); //查看容器列表
swiftClientWork.containerList(); //查看容器中的对象列表
swiftClientWork.containerObjects("containerName1"); //对容器中的对象可以进行前缀和返回条数的限制 如下:对象名称前缀为3 且结果值返回5条记录
swiftClientWork.containerObjectsPage("containerName1","3",5); //查看对象的属性
swiftClientWork.getObjectMetada("Container1","3.zip"); //下载对象
swiftClientWork.getObject( "Container1","3.zip","E://8.zip"); //删除对象
swiftClientWork.deleteObject( "Container1","3.zip"); //获取tempurl测试
swiftClientWork.getObjectTempUrl("bigContainer", "1.jpg",600 ); } }

五、java操作swift对象存储(官网样例)的更多相关文章

  1. swift对象存储

    swift对象存储 简介 OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.对象存储,用于 ...

  2. swift对象存储安装

    对象存储服务概览 OpenStack对象存储是一个多租户的对象存储系统,它支持大规模扩展,可以以低成本来管理大型的非结构化数据,通过RESTful HTTP 应用程序接口. 它包含下列组件: 代理服务 ...

  3. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 四

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  4. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  5. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 二

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  6. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  7. 九、Swift对象存储服务(双节点搭建)

    九.Swift对象存储服务(双节点搭建) 要求:Controoler节点需要2块空盘 Compute节点需要再加2块空盘 本次搭建采用Controller 和 Compute双节点节点做swift组件 ...

  8. Java操作Sqoop对象

    Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Had ...

  9. Golang 调用 aws-sdk 操作 S3对象存储

    Golang 调用 aws-sdk 操作 S3对象存储 前言 因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧. 基础的功 ...

  10. java 覆盖hashCode()深入探讨 代码演示样例

    java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...

随机推荐

  1. CoreFlex框架发布 `0.1.1`

    CoreFlex框架发布 0.1.1 框架描述 CoreFlex是一个支持.NET 6,.NET 7,.NET 8的快速开发框架,也提供MasaFramework相关框架的集成提供更多功能模块, 集成 ...

  2. UMP系统概述

    突出性能: 1.低成本,高性能    2.开源数据库 UMP在设计时要实现一下原则: 多租户:

  3. VSCode个性化的配置

    1.下载插件 Eclipse快捷键(我以前用Eclipse习惯了,大家不需要) Premitter Vetur koroFileHeader 2.修改VSCode设置 3.粘贴下面的代码 { &quo ...

  4. python、numpy计算不同文档下的词的TF-IDF值以及进行文档相似度匹配(实战)

    TF-IDF 计算公式(一个词的 tf-idf 值在不同文档,它的值也不同): 1.根据已有的原始数据,只展示了前5片文档,content是文档内容,s_words是通过jieba分词将文档划分成了若 ...

  5. FOJ有奖月赛-2015年11月 Problem B 函数求解

    Problem B 函数求解 Accept: 171    Submit: 540Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem D ...

  6. 火山引擎ByteHouse基于云原生架构的实时导入探索与实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着企业降本增效.智能化数据决策需求的增强,传统的商业数据库已经难以满足和响应快速增长的业务诉求.在此背景下,云原 ...

  7. Javascript Ajax总结——其他跨域技术之图像Ping和JSONP

    在CORS出现之前,为实现跨域Ajax通信,开发人员利用DOM中能够执行跨域请求的功能,在不依赖XHR对象的情况下也能发送某种请求.1.图像Ping这里使用<img>标签.一个网页可以从任 ...

  8. Windows Server 2016配置NTP客户端

    前提:开通Windows Time 服务 输入services.msc进入服务管理界面,找到Windows Time 开启服务. 情况1:可以直接设置NTP时钟 控制面板--时钟和区域--设置时间和日 ...

  9. bazel test 编译失败:googletest、gtest 报错

    问题描述 bazel test 遇到很多奇怪的编译错误,报错位置位于"googletest"目录,而且没有修改过 googletest 源码: ERROR: /bazel_cach ...

  10. 实时媒体AI,打破内容创作天花板,加速视频创新

    摘要:互联网视频经过几代发展,用户体验快速升级,对创新玩法.互动性要求越来越高.那如何解决这些问题? 媒体AI,是行业共识.华为云提供云原生实时媒体AI能力,联合伙伴打造AI算法开放生态市场,加速视频 ...