注意

本文档适用于 Ceph 的开发版本。

Java Swift 示例

设置

以下示例可能需要导入部分或全部以下 Java 类

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.StoredObject;
import java.io.File;
import java.io.IOException;
import java.util.*;

创建连接

这将创建一个连接,以便您可以与服务器交互

String username = "USERNAME";
String password = "PASSWORD";
String authUrl  = "https://radosgw.endpoint/auth/1.0";

AccountConfig config = new AccountConfig();
config.setUsername(username);
config.setPassword(password);
config.setAuthUrl(authUrl);
config.setAuthenticationMethod(AuthenticationMethod.BASIC);
Account account = new AccountFactory(config).createAccount();

创建容器

这将创建一个名为 my-new-container 的新容器

Container container = account.getContainer("my-new-container");
container.create();

创建对象

这将从名为 foo.txt 的文件在容器 my-new-container 中创建一个对象 foo.txt

Container container = account.getContainer("my-new-container");
StoredObject object = container.getObject("foo.txt");
object.uploadObject(new File("foo.txt"));

添加/更新对象元数据

这将把元数据键值对 key:value 添加到容器 my-new-container 中名为 foo.txt 的对象

Container container = account.getContainer("my-new-container");
StoredObject object = container.getObject("foo.txt");
Map<String, Object> metadata = new TreeMap<String, Object>();
metadata.put("key", "value");
object.setMetadata(metadata);

列出拥有的容器

这将获取您拥有的容器列表。它还会打印出容器名称。

Collection<Container> containers = account.list();
for (Container currentContainer : containers) {
    System.out.println(currentContainer.getName());
}

输出将类似于

mahbuckat1
mahbuckat2
mahbuckat3

列出容器内容

这将获取容器 my-new-container 中的对象列表;并且,它还会打印出每个对象的名称、文件大小和上次修改日期

Container container = account.getContainer("my-new-container");
Collection<StoredObject> objects = container.list();
for (StoredObject currentObject : objects) {
    System.out.println(currentObject.getName());
}

输出将类似于

myphoto1.jpg
myphoto2.jpg

检索对象元数据

这将检索元数据并获取容器 my-new-container 中名为 foo.txt 的对象的 MIME 类型

Container container = account.getContainer("my-new-container");
StoredObject object = container.getObject("foo.txt");
Map<String, Object> returnedMetadata = object.getMetadata();
for (String name : returnedMetadata.keySet()) {
    System.out.println("META / "+name+": "+returnedMetadata.get(name));
}

检索对象

这将下载容器 my-new-container 中的对象 foo.txt 并将其保存在 ./outfile.txt

Container container = account.getContainer("my-new-container");
StoredObject object = container.getObject("foo.txt");
object.downloadObject(new File("outfile.txt"));

删除对象

这将删除容器“my-new-container”中的对象 goodbye.txt

Container container = account.getContainer("my-new-container");
StoredObject object = container.getObject("foo.txt");
object.delete();

删除容器

这将删除名为“my-new-container”的容器

Container container = account.getContainer("my-new-container");
container.delete();

注意

容器必须为空!否则将无法正常工作!

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入