注意

本文档适用于 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来自名为foo.txt在容器中my-new-container:

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

添加/更新对象元数据

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

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

检索对象的元数据

这将检索元数据并获取名为foo.txt的对象在名为my-new-container:

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));
}

获取对象

这会下载对象foo.txt的容器中的 MIME 类型my-new-container并将其保存到./outfile.txt:

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

删除对象

这会删除对象goodbye.txt在名为“my-new-container”的容器中:

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();

Note

容器必须为空!否则将不起作用!

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.