注意
本文档适用于 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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.