From a2b908736c49712b2f8965364a7915f0218ad29d Mon Sep 17 00:00:00 2001
From: dingjsh <47954233@qq.com>
Date: Sun, 12 Nov 2017 16:24:21 +0800
Subject: [PATCH 1/4] 1. translate API docs to Chinese. 2. fix a typo 525MB to
5MB in the original API doc.
---
README_zh_CN.md | 166 +++++
docs/API.md | 4 +-
docs/zh_CN/API.md | 1450 ++++++++++++++++++++++++++++++++++++
docs/zh_CN/CONTRIBUTING.md | 9 +
docs/zh_CN/MAINTAINERS.md | 61 ++
5 files changed, 1688 insertions(+), 2 deletions(-)
create mode 100644 README_zh_CN.md
create mode 100644 docs/zh_CN/API.md
create mode 100644 docs/zh_CN/CONTRIBUTING.md
create mode 100644 docs/zh_CN/MAINTAINERS.md
diff --git a/README_zh_CN.md b/README_zh_CN.md
new file mode 100644
index 000000000..065243ff9
--- /dev/null
+++ b/README_zh_CN.md
@@ -0,0 +1,166 @@
+# 适用于Amazon S3兼容云存储的Minio Java SDK [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io)
+
+Minio Java Client SDK提供简单的API来访问任何Amazon S3兼容的对象存储服务。
+
+本快速入门指南将向你展示如何安装客户端SDK并执行示例java程序。有关API和示例的完整列表,请查看[Java Client API Reference](http://docs.minio.io/docs/java-client-api-reference)文档。
+
+## 最低需求
+Java 1.7或更高版本:
+
+* [OracleJDK 8.0](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
+* [OpenJDK8.0](http://openjdk.java.net/install/)
+
+## 使用maven
+```xml
+
+ io.minio
+ minio
+ 3.0.9
+
+```
+
+## 使用gradle
+```xml
+dependencies {
+ compile 'io.minio:minio:3.0.9'
+}
+```
+
+## 直接下载JAR
+你可以到maven仓库直接下载最新版的[JAR](http://repo1.maven.org/maven2/io/minio/minio/3.0.9/)。
+
+## 快速入门示例-文件上传
+本示例程序连接到一个对象存储服务,创建一个存储桶并上传一个文件到该桶中。
+
+你需要有存储服务的三个属性才能连接到该服务。
+
+| 参数 | 说明 |
+| :------- | :------------ |
+| Endpoint | 对象存储服务的URL |
+| Access Key | Access key就像用户ID,可以唯一标识你的账户。 |
+| Secret Key | Secret key是你账户的密码。 |
+
+
+下面的例子,我们将使用一个运行在[https://play.minio.io:9000](https://play.minio.io:9000)的免费托管的Minio服务。你可以随意使用此服务进行测试和开发。此示例中显示的访问凭据是公开的。
+
+#### FileUploader.java
+
+```java
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.InvalidKeyException;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import io.minio.MinioClient;
+import io.minio.errors.MinioException;
+
+public class FileUploader {
+ public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {
+ try {
+ // 使用Minio服务的URL,端口,Access key和Secret key创建一个MinioClient对象
+ MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+
+ // 检查存储桶是否已经存在
+ boolean isExist = minioClient.bucketExists("asiatrip");
+ if(isExist) {
+ System.out.println("Bucket already exists.");
+ } else {
+ // 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
+ minioClient.makeBucket("asiatrip");
+ }
+
+ // 使用putObject上传一个文件到存储桶中。
+ minioClient.putObject("asiatrip","asiaphotos.zip", "/home/user/Photos/asiaphotos.zip");
+ System.out.println("/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.");
+ } catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+ }
+ }
+}
+```
+
+#### 编译FileUploader
+```sh
+javac -cp "minio-3.0.9-all.jar" FileUploader.java
+```
+
+#### 运行FileUploader
+```sh
+java -cp "minio-3.0.9-all.jar:." FileUploader
+/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.
+
+mc ls play/asiatrip/
+[2016-06-02 18:10:29 PDT] 82KiB asiaphotos.zip
+```
+
+## API文档
+
+下面链接是完整的API文档
+
+* [API完整文档](https://docs.minio.io/docs/java-client-api-reference)
+
+### API文档: 操作存储桶
+* [`makeBucket`](https://docs.minio.io/docs/java-client-api-reference#makeBucket)
+* [`listBuckets`](https://docs.minio.io/docs/java-client-api-reference#listBuckets)
+* [`bucketExists`](https://docs.minio.io/docs/java-client-api-reference#bucketExists)
+* [`removeBucket`](https://docs.minio.io/docs/java-client-api-reference#removeBucket)
+* [`listObjects`](https://docs.minio.io/docs/java-client-api-reference#listObjects)
+* [`listIncompleteUploads`](https://docs.minio.io/docs/java-client-api-reference#listIncompleteUploads)
+
+### API文档: 操作文件对象
+* [`getObject`](https://docs.minio.io/docs/java-client-api-reference#getObject)
+* [`putObject`](https://docs.minio.io/docs/java-client-api-reference#putObject)
+* [`copyObject`](https://docs.minio.io/docs/java-client-api-reference#copyObject)
+* [`statObject`](https://docs.minio.io/docs/java-client-api-reference#statObject)
+* [`removeObject`](https://docs.minio.io/docs/java-client-api-reference#removeObject)
+* [`removeIncompleteUpload`](https://docs.minio.io/docs/java-client-api-reference#removeIncompleteUpload)
+
+### API文档: Presigned操作
+* [`presignedGetObject`](https://docs.minio.io/docs/java-client-api-reference#presignedGetObject)
+* [`presignedPutObject`](https://docs.minio.io/docs/java-client-api-reference#presignedPutObject)
+* [`presignedPostPolicy`](https://docs.minio.io/docs/java-client-api-reference#presignedPostPolicy)
+
+### API文档: 操作存储桶策略
+* [`getBucketPolicy`](https://docs.minio.io/docs/java-client-api-reference#getBucketPolicy)
+* [`setBucketPolicy`](https://docs.minio.io/docs/java-client-api-reference#setBucketPolicy)
+
+## 完整示例
+
+#### 完整示例: Bucket Operations
+* [ListBuckets.java](https://github.com/minio/minio-java/tree/master/examples/ListBuckets.java)
+* [ListObjects.java](https://github.com/minio/minio-java/tree/master/examples/ListObjects.java)
+* [BucketExists.java](https://github.com/minio/minio-java/tree/master/examples/BucketExists.java)
+* [MakeBucket.java](https://github.com/minio/minio-java/tree/master/examples/MakeBucket.java)
+* [RemoveBucket.java](https://github.com/minio/minio-java/tree/master/examples/RemoveBucket.java)
+* [ListIncompleteUploads.java](https://github.com/minio/minio-java/tree/master/examples/ListIncompleteUploads.java)
+
+#### 完整示例: Object Operations
+* [PutObject.java](https://github.com/minio/minio-java/tree/master/examples/PutObject.java)
+* [PutObjectEncrypted.java](https://github.com/minio/minio-java/tree/master/examples/PutObjectEncrypted.java)
+* [GetObject.Java](https://github.com/minio/minio-java/tree/master/examples/GetObject.java)
+* [GetObjectEncrypted.Java](https://github.com/minio/minio-java/tree/master/examples/GetObjectEncrypted.java)
+* [GetPartialObject.java](https://github.com/minio/minio-java/tree/master/examples/GetPartialObject.java)
+* [RemoveObject.java](https://github.com/minio/minio-java/tree/master/examples/RemoveObject.java)
+* [RemoveObjects.java](https://github.com/minio/minio-java/tree/master/examples/RemoveObjects.java)
+* [StatObject.java](https://github.com/minio/minio-java/tree/master/examples/StatObject.java)
+
+#### 完整示例: Presigned Operations
+* [PresignedGetObject.java](https://github.com/minio/minio-java/tree/master/examples/PresignedGetObject.java)
+* [PresignedPutObject.java](https://github.com/minio/minio-java/tree/master/examples/PresignedPutObject.java)
+* [PresignedPostPolicy.java](https://github.com/minio/minio-java/tree/master/examples/PresignedPostPolicy.java)
+
+#### 完整示例: Bucket Policy Operations
+* [SetBucketPolicy.java](https://github.com/minio/minio-java/tree/master/examples/SetBucketPolicy.java)
+* [GetBucketPolicy.Java](https://github.com/minio/minio-java/tree/master/examples/GetBucketPolicy.java)
+
+## 了解更多
+* [Minio官方文档](https://docs.minio.io)
+* [Minio Java Client SDK API文档](https://docs.minio.io/docs/java-client-api-reference)
+* [创建属于你的照片API服务-完整示例](https://docs.minio.io/docs/java-photo-api-service)
+
+## 贡献
+[贡献者指南](https://github.com/minio/minio-java/blob/master/docs/zh_CN/CONTRIBUTING.md)
+
+[![Build Status](https://travis-ci.org/minio/minio-java.svg)](https://travis-ci.org/minio/minio-java)
+[![Build status](https://ci.appveyor.com/api/projects/status/1d05e6nvxcelmrak?svg=true)](https://ci.appveyor.com/project/harshavardhana/minio-java)
diff --git a/docs/API.md b/docs/API.md
index ccc231e04..55eec0993 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -967,7 +967,7 @@ Takes data from given stream, encrypts it using a random content key and uploads
uploads the encrypted content key and iv as header of the encrypted object. The content key is encrypted using the
master key passed to this function.
-If the object is larger than 525MB, the client will automatically perform multi part upload.
+If the object is larger than 5MB, the client will automatically perform multi part upload.
[View Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.io.InputStream-long-java.lang.String-javax.crypto.SecretKey-)
@@ -1049,7 +1049,7 @@ Takes data from given stream, encrypts it using a random content key and uploads
uploads the encrypted content key and iv as header of the encrypted object. The content key is encrypted using the
master key pair passed to this function.
-If the object is larger than 525MB, the client will automatically perform multi part upload.
+If the object is larger than 5MB, the client will automatically perform multi part upload.
[View Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.io.InputStream-long-java.lang.String-java.security.KeyPair-)
diff --git a/docs/zh_CN/API.md b/docs/zh_CN/API.md
new file mode 100644
index 000000000..71aa60a18
--- /dev/null
+++ b/docs/zh_CN/API.md
@@ -0,0 +1,1450 @@
+# Java Client API参考文档 [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io)
+
+## 初始化Minio Client object。
+
+## Minio
+
+```java
+MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+```
+
+## AWS S3
+
+
+```java
+MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
+```
+
+| 存储桶操作 | 文件对象操作 | Presigned操作 | 存储桶策略
+|:--- |:--- |:--- |:--- |
+| [`makeBucket`](#makeBucket) |[`getObject`](#getObject) |[`presignedGetObject`](#presignedGetObject) | [`getBucketPolicy`](#getBucketPolicy) |
+| [`listBuckets`](#listBuckets) | [`putObject`](#putObject) | [`presignedPutObject`](#presignedPutObject) | [`setBucketPolicy`](#setBucketPolicy) |
+| [`bucketExists`](#bucketExists) | [`copyObject`](#copyObject) | [`presignedPostPolicy`](#presignedPostPolicy) | |
+| [`removeBucket`](#removeBucket) | [`statObject`](#statObject) | | |
+| [`listObjects`](#listObjects) | [`removeObject`](#removeObject) | | |
+| [`listIncompleteUploads`](#listIncompleteUploads) | [`removeIncompleteUpload`](#removeIncompleteUpload) | | |
+
+
+## 1. 构造函数
+
+
+
+| |
+|---|
+|`public MinioClient(String endpoint) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given endpoint using anonymous access. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-) |
+
+
+| |
+|---|
+|`public MinioClient(URL url) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given url using anonymous access. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.net.URL-) |
+
+
+| |
+|---|
+| `public MinioClient(com.squareup.okhttp.HttpUrl url) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+|Creates Minio client object with given HttpUrl object using anonymous access. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-com.squareup.okhttp.HttpUrl-) |
+
+| |
+|---|
+| `public MinioClient(String endpoint, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given endpoint, access key and secret key. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-java.lang.String-java.lang.String-)|
+
+| |
+|---|
+| `public MinioClient(String endpoint, int port, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given endpoint, port, access key and secret key using secure (HTTPS) connection. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-int-java.lang.String-java.lang.String-) |
+
+
+| |
+|---|
+| `public MinioClient(String endpoint, String accessKey, String secretKey, boolean secure) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given endpoint, access key and secret key using secure (HTTPS) connection. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-java.lang.String-java.lang.String-boolean-) |
+
+
+| |
+|---|
+| `public MinioClient(String endpoint, int port, String accessKey, String secretKey, boolean secure) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object using given endpoint, port, access key, secret key and secure option. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-int-java.lang.String-java.lang.String-boolean-) |
+
+| |
+|---|
+| `public MinioClient(com.squareup.okhttp.HttpUrl url, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given URL object, access key and secret key. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-com.squareup.okhttp.HttpUrl-java.lang.String-java.lang.String-) |
+
+
+| |
+|---|
+| `public MinioClient(URL url, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
+| Creates Minio client object with given URL object, access key and secret key. |
+| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.net.URL-java.lang.String-java.lang.String-) |
+
+
+__参数__
+
+| 参数 | 类型 | 描述 |
+|---|---|---|
+| `endpoint` | _string_ | endPoint是一个URL,域名,IPv4或者IPv6地址。以下是合法的endpoints: |
+| | |https://s3.amazonaws.com |
+| | |https://play.minio.io:9000 |
+| | |localhost |
+| | |play.minio.io|
+| `port` | _int_ | TCP/IP端口号。可选,默认值是,如果是http,则默认80端口,如果是https,则默认是443端口。|
+| `accessKey` | _string_ |accessKey类似于用户ID,用于唯一标识你的账户。 |
+|`secretKey` | _string_ | secretKey是你账户的密码。|
+|`secure` | _boolean_ |如果是true,则用的是https而不是http,默认值是true。 |
+|`url` | _URL_ |Endpoint URL对象。|
+|`url` | _HttpURL_ |Endpoint HttpUrl对象。 |
+
+
+__示例__
+
+
+### Minio
+
+
+```java
+// 1. public MinioClient(String endpoint)
+MinioClient minioClient = new MinioClient("https://play.minio.io:9000");
+
+// 2. public MinioClient(URL url)
+MinioClient minioClient = new MinioClient(new URL("https://play.minio.io:9000"));
+
+// 3. public MinioClient(com.squareup.okhttp.HttpUrl url)
+ MinioClient minioClient = new MinioClient(new HttpUrl.parse("https://play.minio.io:9000"));
+
+// 4. public MinioClient(String endpoint, String accessKey, String secretKey)
+MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+
+// 5. public MinioClient(String endpoint, int port, String accessKey, String secretKey)
+MinioClient minioClient = new MinioClient("https://play.minio.io", 9000, "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+
+// 6. public MinioClient(String endpoint, String accessKey, String secretKey, boolean insecure)
+MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", true);
+
+// 7. public MinioClient(String endpoint, int port, String accessKey, String secretKey, boolean insecure)
+MinioClient minioClient = new MinioClient("https://play.minio.io", 9000, "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", true);
+
+// 8. public MinioClient(com.squareup.okhttp.HttpUrl url, String accessKey, String secretKey)
+ MinioClient minioClient = new MinioClient(new URL("https://play.minio.io:9000"), "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+
+// 9. public MinioClient(URL url, String accessKey, String secretKey)
+MinioClient minioClient = new MinioClient(HttpUrl.parse("https://play.minio.io:9000"), "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+```
+
+
+### AWS S3
+
+
+```java
+// 1. public MinioClient(String endpoint)
+MinioClient s3Client = new MinioClient("https://s3.amazonaws.com");
+
+// 2. public MinioClient(URL url)
+MinioClient minioClient = new MinioClient(new URL("https://s3.amazonaws.com"));
+
+// 3. public MinioClient(com.squareup.okhttp.HttpUrl url)
+ MinioClient s3Client = new MinioClient(new HttpUrl.parse("https://s3.amazonaws.com"));
+
+// 4. public MinioClient(String endpoint, String accessKey, String secretKey)
+MinioClient s3Client = new MinioClient("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
+
+// 5. public MinioClient(String endpoint, int port, String accessKey, String secretKey)
+MinioClient s3Client = new MinioClient("s3.amazonaws.com", 80, "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
+
+// 6. public MinioClient(String endpoint, String accessKey, String secretKey, boolean insecure)
+MinioClient s3Client = new MinioClient("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", false);
+
+// 7. public MinioClient(String endpoint, int port, String accessKey, String secretKey, boolean insecure)
+MinioClient s3Client = new MinioClient("s3.amazonaws.com", 80, "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY",false);
+
+// 8. public MinioClient(com.squareup.okhttp.HttpUrl url, String accessKey, String secretKey)
+ MinioClient s3Client = new MinioClient(new URL("s3.amazonaws.com"), "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
+
+// 9. public MinioClient(URL url, String accessKey, String secretKey)
+MinioClient s3Client = new MinioClient(HttpUrl.parse("s3.amazonaws.com"), "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
+```
+
+## 2. 存储桶操作
+
+
+### makeBucket(String bucketName)
+`public void makeBucket(String bucketName)`
+
+创建一个新的存储桶
+
+[查看Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#makeBucket-java.lang.String-)
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ |存储桶名称 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``None`` | 异常列表: |
+| | ``InvalidBucketNameException`` : 非法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常 |
+| | ``ErrorResponseException`` : 执行失败 |
+| | ``InternalException`` : 内部异常 |
+
+
+__示例__
+
+
+```java
+try {
+ // 如存储桶不存在,创建之。
+ boolean found = minioClient.bucketExists("mybucket");
+ if (found) {
+ System.out.println("mybucket already exists");
+ } else {
+ // 创建名为'my-bucketname'的存储桶。
+ minioClient.makeBucket("mybucket");
+ System.out.println("mybucket is created successfully");
+ }
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### listBuckets()
+
+`public List listBuckets()`
+
+列出所有存储桶。
+
+[查看Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#listBuckets--)
+
+|返回值类型 | 异常 |
+|:--- |:--- |
+| ``List Bucket`` : List of bucket type. | 异常列表: |
+| | ``NoResponseException`` : 服务端无响应 |
+| | ``IOException`` : 连接异常 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常 |
+| | ``ErrorResponseException`` :执行失败异溃|
+| | ``InternalException`` : 内部错误|
+
+
+__示例__
+
+
+```java
+try {
+ // 列出所有存储桶
+ List bucketList = minioClient.listBuckets();
+ for (Bucket bucket : bucketList) {
+ System.out.println(bucket.creationDate() + ", " + bucket.name());
+ }
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### bucketExists(String bucketName)
+
+`public boolean bucketExists(String bucketName)`
+
+检查存储桶是否存在。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#bucketExists-java.lang.String-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称 |
+
+
+| 返回值值类型 | 异常 |
+|:--- |:--- |
+| ``boolean``: true if the bucket exists | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+
+__示例__
+
+
+```java
+try {
+ // 检查'my-bucketname'是否存在。
+ boolean found = minioClient.bucketExists("mybucket");
+ if (found) {
+ System.out.println("mybucket exists");
+ } else {
+ System.out.println("mybucket does not exist");
+ }
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+
+### removeBucket(String bucketName)
+
+`public void removeBucket(String bucketName)`
+
+删除一个存储桶。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeBucket-java.lang.String-)
+
+注意: - removeBucket不会删除存储桶里的对象,你需要通过removeObject API来删除它们。
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+__示例__
+
+
+```java
+try {
+ // 删除之前先检查`my-bucket`是否存在。
+ boolean found = minioClient.bucketExists("mybucket");
+ if (found) {
+ // 删除`my-bucketname`存储桶,注意,只有存储桶为空时才能删除成功。
+ minioClient.removeBucket("mybucket");
+ System.out.println("mybucket is removed successfully");
+ } else {
+ System.out.println("mybucket does not exist");
+ }
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### listObjects(String bucketName, String prefix, boolean recursive, boolean useVersion1)
+
+`public Iterable> listObjects(String bucketName, String prefix, boolean recursive, boolean useVersion1)`
+
+列出某个存储桶中的所有对象。
+
+[查看Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#listObjects-java.lang.String-java.lang.String-boolean-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``prefix`` | _String_ | 对象名称的前缀 |
+| ``recursive`` | _boolean_ | 是否递归查找,如果是false,就模拟文件夹结构查找。 |
+| ``useVersion1`` | _boolean_ | 如果是true, 使用版本1 REST API |
+
+
+|返回值类型 | 异常 |
+|:--- |:--- |
+| ``Iterable>``:an iterator of Result Items. | _None_ |
+
+
+__示例__
+
+
+```java
+try {
+ // 检查'mybucket'是否存在。
+ boolean found = minioClient.bucketExists("mybucket");
+ if (found) {
+ // 列出'my-bucketname'里的对象
+ Iterable> myObjects = minioClient.listObjects("mybucket");
+ for (Result- result : myObjects) {
+ Item item = result.get();
+ System.out.println(item.lastModified() + ", " + item.size() + ", " + item.objectName());
+ }
+ } else {
+ System.out.println("mybucket does not exist");
+ }
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+
+### listIncompleteUploads(String bucketName, String prefix, boolean recursive)
+
+`public Iterable> listIncompleteUploads(String bucketName, String prefix, boolean recursive)`
+
+列出存储桶中被部分上传的对象。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#listIncompleteUploads-java.lang.String-java.lang.String-boolean-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``prefix`` | _String_ | 对象名称的前缀,列出有该前缀的对象 |
+| ``recursive`` | _boolean_ | 是否递归查找,如果是false,就模拟文件夹结构查找。 |
+
+
+|返回值类型 | 异常 |
+|:--- |:--- |
+| ``Iterable>``: an iterator of Upload. | _None_ |
+
+
+__示例__
+
+
+```java
+try {
+ // 检查'mybucket'是否存在。
+ boolean found = minioClient.bucketExists("mybucket");
+ if (found) {
+ // 列出'mybucket'中所有未完成的multipart上传的的对象。
+ Iterable> myObjects = minioClient.listIncompleteUploads("mybucket");
+ for (Result result : myObjects) {
+ Upload upload = result.get();
+ System.out.println(upload.uploadId() + ", " + upload.objectName());
+ }
+ } else {
+ System.out.println("mybucket does not exist");
+ }
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### getBucketPolicy(String bucketName, String objectPrefix)
+`public PolicyType getBucketPolicy(String bucketName, String objectPrefix)`
+
+获得指定对象前缀的存储桶策略。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getBucketPolicy-java.lang.String-java.lang.String-)
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectPrefix`` | _String_ | 策略适用的对象的前缀 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``PolicyType``: The current bucket policy type for a given bucket and objectPrefix. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidBucketNameException `` : 不合法的存储桶名称。 |
+| | ``InvalidObjectPrefixException`` : 不合法的对象前缀 |
+| | ``NoSuchAlgorithmException`` : 找不到相应的签名算法。 |
+| | ``InsufficientDataException`` : 在读到相应length之前就得到一个EOFException。 |
+
+
+__示例__
+
+
+```java
+try {
+ System.out.println("Current policy: " + minioClient.getBucketPolicy("myBucket", "downloads"));
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### setBucketPolicy(String bucketName, String objectPrefix, PolicyType policy)
+`public void setBucketPolicy(String bucketName, String objectPrefix, PolicyType policy)`
+
+给一个存储桶+对象前缀设置策略。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#setBucketPolicy-java.lang.String-java.lang.String-io.minio.BucketPolicy-)
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectPrefix`` | _String_ | 对象前缀。 |
+| ``policy`` | _PolicyType_ | 要赋予的策略,可选值有[PolicyType.NONE, PolicyType.READ_ONLY, PolicyType.READ_WRITE, PolicyType.WRITE_ONLY]. |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidBucketNameException `` : 不合法的存储桶名称。 |
+| | ``InvalidObjectPrefixException`` : 不合法的对象前缀 |
+| | ``NoSuchAlgorithmException`` : 找不到相应的签名算法。 |
+| | ``InsufficientDataException`` : 在读到相应length之前就得到一个EOFException。 |
+
+
+
+__示例__
+
+
+```java
+try {
+ minioClient.setBucketPolicy("myBucket", "uploads", PolicyType.READ_ONLY);
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+## 3. Object operations
+
+
+### getObject(String bucketName, String objectName)
+
+`public InputStream getObject(String bucketName, String objectName, long offset)`
+
+以流的形式下载一个对象。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getObject-java.lang.String-java.lang.String-long-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``InputStream``: InputStream containing the object data. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+__示例__
+
+
+```java
+try {
+ // 调用statObject()来判断对象是否存在。
+ // 如果不存在, statObject()抛出异常,
+ // 否则则代表对象存在。
+ minioClient.statObject("mybucket", "myobject");
+
+ // 获取"myobject"的输入流。
+ InputStream stream = minioClient.getObject("mybucket", "myobject");
+
+ // 读取输入流直到EOF并打印到控制台。
+ byte[] buf = new byte[16384];
+ int bytesRead;
+ while ((bytesRead = stream.read(buf, 0, buf.length)) >= 0) {
+ System.out.println(new String(buf, 0, bytesRead));
+ }
+
+ // 关闭流,此处为示例,流关闭最好放在finally块。
+ stream.close();
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### getObject(String bucketName, String objectName, long offset, Long length)
+
+`public InputStream getObject(String bucketName, String objectName, long offset, Long length)`
+
+下载对象指定区域的字节数组做为流。(断点下载)
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getObject-java.lang.String-java.lang.String-long-java.lang.Long-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``offset`` | _Long_ | ``offset`` 是起始字节的位置 |
+| ``length`` | _Long_ | ``length``是要读取的长度 (可选,如果无值则代表读到文件结尾)。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``InputStream`` : InputStream containing the object's data. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+__示例__
+
+
+```java
+try {
+
+ // 调用statObject()来判断对象是否存在。
+ // 如果不存在, statObject()抛出异常,
+ // 否则则代表对象存在。
+ minioClient.statObject("mybucket", "myobject");
+
+ // 获取指定offset和length的"myobject"的输入流。
+ InputStream stream = minioClient.getObject("mybucket", "myobject", 1024L, 4096L);
+
+ // 读取输入流直到EOF并打印到控制台。
+ byte[] buf = new byte[16384];
+ int bytesRead;
+ while ((bytesRead = stream.read(buf, 0, buf.length)) >= 0) {
+ System.out.println(new String(buf, 0, bytesRead));
+ }
+
+ // 关闭流。
+ stream.close();
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### getObject(String bucketName, String objectName, String fileName)
+
+`public void getObject(String bucketName, String objectName, String fileName)`
+
+下载并将文件保存到本地。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getObject-java.lang.String-java.lang.String-java.lang.String-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``fileName`` | _String_ | File name. |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+__示例__
+
+```java
+try {
+ // 调用statObject()来判断对象是否存在。
+ // 如果不存在, statObject()抛出异常,
+ // 否则则代表对象存在。
+ minioClient.statObject("mybucket", "myobject");
+
+ // 获取myobject的流并保存到photo.jpg文件中。
+ minioClient.getObject("mybucket", "myobject", "photo.jpg");
+
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### getObject(String bucketName, String objectName, SecretKey key)
+
+`public CipherInputStream getObject(String bucketName, String objectName, SecretKey key)`
+
+在给定的存储桶中获取整个加密对象的数据作为InputStream,然后用传入的master key解密和加密对象关联的content key。然后创建一个含有InputStream和Cipher的CipherInputStream。这个Cipher被初始为用于使用content key进行解密,所以CipherInputStream会在返回数据前,尝试读取数据并进行解密。所以read()方法返回的是处理过的原始对象数据。
+
+CipherInputStream必须用完关闭,否则连接不会被释放。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getObject-java.lang.String-java.lang.String-javax.crypto.SecretKey-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``key`` | _SecretKey_ | [SecretKey](https://docs.oracle.com/javase/7/docs/api/javax/crypto/SecretKey.html)类型的数据。|
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidEncryptionMetadataException`` : 加密秘钥错误。 |
+| | ``BadPaddingException`` : 错误的padding |
+| | ``IllegalBlockSizeException`` : 不正确的block size |
+| | ``NoSuchPaddingException`` : 错误的pading类型 |
+| | ``InvalidAlgorithmParameterException`` : 该算法不存在 |
+
+__示例__
+
+```java
+try {
+ // 调用statObject()来判断对象是否存在。
+ // 如果不存在, statObject()抛出异常,
+ // 否则则代表对象存在。
+ minioClient.statObject("mybucket", "myobject");
+
+ //生成256位AES key。
+ KeyGenerator symKeyGenerator = KeyGenerator.getInstance("AES");
+ symKeyGenerator.init(256);
+ SecretKey symKey = symKeyGenerator.generateKey();
+
+ // 获取对象数据并保存到photo.jpg
+ InputStream stream = minioClient.getObject("testbucket", "my-objectname", symKey);
+
+ // 读流到EOF,并输出到控制台。
+ byte[] buf = new byte[16384];
+ int bytesRead;
+ while ((bytesRead = stream.read(buf, 0, buf.length)) >= 0) {
+ System.out.println(new String(buf, 0, bytesRead, StandardCharsets.UTF_8));
+ }
+
+ // 关闭流。
+ stream.close();
+
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### getObject(String bucketName, String objectName, KeyPair key)
+
+`public InputStream getObject(String bucketName, String objectName, KeyPair key)`
+
+在给定的存储桶中获取整个加密对象的数据作为InputStream,然后用传入的master keyPair解密和加密对象关联的content key。然后创建一个含有InputStream和Cipher的CipherInputStream。这个Cipher被初始为用于使用content key进行解密,所以CipherInputStream会在返回数据前,尝试读取数据并进行解密。所以read()方法返回的是处理过的原始对象数据。
+
+CipherInputStream必须用完关闭,否则连接不会被释放。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#getObject-java.lang.String-java.lang.String-java.security.KeyPair-)
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``key`` | _KeyPair_ | RSA [KeyPair](https://docs.oracle.com/javase/7/docs/api/java/security/KeyPair.html)类型的对象。 |
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidEncryptionMetadataException`` : 加密秘钥错误。 |
+| | ``BadPaddingException`` : 错误的padding |
+| | ``IllegalBlockSizeException`` : 不正确的block size |
+| | ``NoSuchPaddingException`` : 错误的pading类型 |
+| | ``InvalidAlgorithmParameterException`` : 该算法不存在 |
+
+__示例__
+
+```java
+try {
+ // 调用statObject()来判断对象是否存在。
+ // 如果不存在, statObject()抛出异常,
+ // 否则则代表对象存在。
+ minioClient.statObject("mybucket", "myobject");
+
+ KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA");
+ keyGenerator.initialize(1024, new SecureRandom());
+ KeyPair keypair = keyGenerator.generateKeyPair();
+
+ // 获取对象数据并保存到photo.jpg
+ InputStream stream = minioClient.getObject("testbucket", "my-objectname", keypair);
+
+ // 读流到EOF,并输出到控制台。
+ byte[] buf = new byte[16384];
+ int bytesRead;
+ while ((bytesRead = stream.read(buf, 0, buf.length)) >= 0) {
+ System.out.println(new String(buf, 0, bytesRead, StandardCharsets.UTF_8));
+ }
+
+ // 关闭流。
+ stream.close();
+
+} catch (MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### putObject(String bucketName, String objectName, InputStream stream, long size, String contentType)
+
+`public void putObject(String bucketName, String objectName, InputStream stream, long size, String contentType)`
+
+通过InputStream上传对象。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.io.InputStream-long-java.lang.String-)
+
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``stream`` | _InputStream_ | 要上传的流。 |
+| ``size`` | _long_ | 要上传的`stream`的size |
+| ``contentType`` | _String_ | Content type。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+__示例__
+
+
+单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这就当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。
+
+```java
+try {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 1000; i++) {
+ builder.append("Sphinx of black quartz, judge my vow: Used by Adobe InDesign to display font samples. ");
+ builder.append("(29 letters)\n");
+ builder.append("Jackdaws love my big sphinx of quartz: Similarly, used by Windows XP for some fonts. ");
+ builder.append("(31 letters)\n");
+ builder.append("Pack my box with five dozen liquor jugs: According to Wikipedia, this one is used on ");
+ builder.append("NASAs Space Shuttle. (32 letters)\n");
+ builder.append("The quick onyx goblin jumps over the lazy dwarf: Flavor text from an Unhinged Magic Card. ");
+ builder.append("(39 letters)\n");
+ builder.append("How razorback-jumping frogs can level six piqued gymnasts!: Not going to win any brevity ");
+ builder.append("awards at 49 letters long, but old-time Mac users may recognize it.\n");
+ builder.append("Cozy lummox gives smart squid who asks for job pen: A 41-letter tester sentence for Mac ");
+ builder.append("computers after System 7.\n");
+ builder.append("A few others we like: Amazingly few discotheques provide jukeboxes; Now fax quiz Jack! my ");
+ builder.append("brave ghost pled; Watch Jeopardy!, Alex Trebeks fun TV quiz game.\n");
+ builder.append("- --\n");
+ }
+ ByteArrayInputStream bais = new
+ ByteArrayInputStream(builder.toString().getBytes("UTF-8"));
+ // 创建对象
+ minioClient.putObject("mybucket", "myobject", bais, bais.available(), "application/octet-stream");
+ bais.close();
+ System.out.println("myobject is uploaded successfully");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### putObject(String bucketName, String objectName, String fileName)
+
+`public void putObject(String bucketName, String objectName, String fileName)`
+
+通过文件上传到对象中。
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.lang.String-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``fileName`` | _String_ | File name. |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+__示例__
+
+
+单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这就当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。
+
+
+```java
+try {
+ minioClient.putObject("mybucket", "island.jpg", "/mnt/photos/island.jpg")
+ System.out.println("island.jpg is uploaded successfully");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+### putObject(String bucketName, String objectName, InputStream stream, long size, String contentType, SecretKey key)
+
+`public void putObject(String bucketName, String objectName, InputStream stream, long size, String contentType,
+ SecretKey key)`
+
+拿到流的数据,使用随机生成的content key进行加密,并上传到指定存储桶中。同时将加密后的content key和iv做为加密对象有header也上传到存储桶中。content key使用传入到该方法的master key进行加密。
+
+如果对象大于5MB,客户端会自动进行multi part上传。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.io.InputStream-long-java.lang.String-javax.crypto.SecretKey-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``stream`` | _InputStream_ | 要上传的流。 |
+| ``size`` | _long_ | 要上传的流的大小。|
+| ``contentType`` | _String_ | Content type。|
+| ``key`` | _SecretKey_ | 用AES初使化的对象[SecretKey](https://docs.oracle.com/javase/7/docs/api/javax/crypto/SecretKey.html)。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidAlgorithmParameterException`` : 错误的加密算法。 |
+| | ``BadPaddingException`` : 不正确的padding. |
+| | ``IllegalBlockSizeException`` : 不正确的block。 |
+| | ``NoSuchPaddingException`` : 错误的padding类型。 |
+
+__示例__
+
+对象使用随机生成的key进行加密,然后这个用于加密数据的key又被由仅被client知道的master key(封装在encryptionMaterials对象里)进行加密。这个被加密后的key和IV做为对象的header和加密后的对象一起被上传到存储服务上。
+
+```java
+try {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 1000; i++) {
+ builder.append("Sphinx of black quartz, judge my vow: Used by Adobe InDesign to display font samples. ");
+ builder.append("(29 letters)\n");
+ builder.append("Jackdaws love my big sphinx of quartz: Similarly, used by Windows XP for some fonts. ");
+ builder.append("(31 letters)\n");
+ builder.append("Pack my box with five dozen liquor jugs: According to Wikipedia, this one is used on ");
+ builder.append("NASAs Space Shuttle. (32 letters)\n");
+ builder.append("The quick onyx goblin jumps over the lazy dwarf: Flavor text from an Unhinged Magic Card. ");
+ builder.append("(39 letters)\n");
+ builder.append("How razorback-jumping frogs can level six piqued gymnasts!: Not going to win any brevity ");
+ builder.append("awards at 49 letters long, but old-time Mac users may recognize it.\n");
+ builder.append("Cozy lummox gives smart squid who asks for job pen: A 41-letter tester sentence for Mac ");
+ builder.append("computers after System 7.\n");
+ builder.append("A few others we like: Amazingly few discotheques provide jukeboxes; Now fax quiz Jack! my ");
+ builder.append("brave ghost pled; Watch Jeopardy!, Alex Trebeks fun TV quiz game.\n");
+ builder.append("- --\n");
+ }
+ ByteArrayInputStream bais = new
+ ByteArrayInputStream(builder.toString().getBytes("UTF-8"));
+
+ //生成256位AES key.
+ KeyGenerator symKeyGenerator = KeyGenerator.getInstance("AES");
+ symKeyGenerator.init(256);
+ SecretKey symKey = symKeyGenerator.generateKey();
+
+ // 创建一个对象
+ minioClient.putObject("mybucket", "myobject", bais, bais.available(), "application/octet-stream", symKey);
+ bais.close();
+ System.out.println("myobject is uploaded successfully");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### putObject(String bucketName, String objectName, InputStream stream, long size, String contentType, KeyPair key)
+
+`public void putObject(String bucketName, String objectName, InputStream stream, long size, String contentType,
+ KeyPair key)`
+
+
+拿到流的数据,使用随机生成的content key进行加密,并上传到指定存储桶中。同时将加密后的content key和iv做为加密对象有header也上传到存储桶中。content key使用传入到该方法的master key进行加密。
+
+如果对象大于5MB,客户端会自动进行multi part上传。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#putObject-java.lang.String-java.lang.String-java.io.InputStream-long-java.lang.String-java.security.KeyPair-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``stream`` | _InputStream_ | 要上传的流。 |
+| ``size`` | _long_ | 要上传的流的大小。 |
+| ``contentType`` | _String_ | Content type。 |
+| ``key`` | _KeyPair_ | 一个RSA [KeyPair](https://docs.oracle.com/javase/7/docs/api/java/security/KeyPair.html)的对象。 |
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+| | ``InvalidAlgorithmParameterException`` : 错误的加密算法。 |
+| | ``BadPaddingException`` : 不正确的padding。 |
+| | ``IllegalBlockSizeException`` : 不正确的block。 |
+| | ``NoSuchPaddingException`` : 错误的pading类型。 |
+
+__示例__
+
+对象使用随机生成的key进行加密,然后这个用于加密数据的key又被由仅被client知道的master key(封装在encryptionMaterials对象里)进行加密。这个被加密后的key和IV做为对象的header和加密后的对象一起被上传到存储服务上。
+
+```java
+try {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 1000; i++) {
+ builder.append("Sphinx of black quartz, judge my vow: Used by Adobe InDesign to display font samples. ");
+ builder.append("(29 letters)\n");
+ builder.append("Jackdaws love my big sphinx of quartz: Similarly, used by Windows XP for some fonts. ");
+ builder.append("(31 letters)\n");
+ builder.append("Pack my box with five dozen liquor jugs: According to Wikipedia, this one is used on ");
+ builder.append("NASAs Space Shuttle. (32 letters)\n");
+ builder.append("The quick onyx goblin jumps over the lazy dwarf: Flavor text from an Unhinged Magic Card. ");
+ builder.append("(39 letters)\n");
+ builder.append("How razorback-jumping frogs can level six piqued gymnasts!: Not going to win any brevity ");
+ builder.append("awards at 49 letters long, but old-time Mac users may recognize it.\n");
+ builder.append("Cozy lummox gives smart squid who asks for job pen: A 41-letter tester sentence for Mac ");
+ builder.append("computers after System 7.\n");
+ builder.append("A few others we like: Amazingly few discotheques provide jukeboxes; Now fax quiz Jack! my ");
+ builder.append("brave ghost pled; Watch Jeopardy!, Alex Trebeks fun TV quiz game.\n");
+ builder.append("- --\n");
+ }
+ ByteArrayInputStream bais = new
+ ByteArrayInputStream(builder.toString().getBytes("UTF-8"));
+
+ KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA");
+ keyGenerator.initialize(1024, new SecureRandom());
+ KeyPair keypair = keyGenerator.generateKeyPair();
+
+ // Create an object
+ minioClient.putObject("mybucket", "myobject", bais, bais.available(), "application/octet-stream", keypair);
+ bais.close();
+ System.out.println("myobject is uploaded successfully");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### statObject(String bucketName, String objectName)
+
+*`public ObjectStat statObject(String bucketName, String objectName)`*
+
+获取对象的元数据。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#statObject-java.lang.String-java.lang.String-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``ObjectStat``: Populated object meta data. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+__示例__
+
+
+```java
+try {
+ // 获得对象的元数据。
+ ObjectStat objectStat = minioClient.statObject("mybucket", "myobject");
+ System.out.println(objectStat);
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### copyObject(String bucketName, String objectName, String destBucketName, String destObjectName, CopyConditions cpConds, Map metadata)
+
+*`public void copyObject(String bucketName, String objectName, String destBucketName, String destObjectName, CopyConditions cpConds, Map metadata)`*
+
+从objectName指定的对象中将数据拷贝到destObjectName指定的对象。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#copyObject-java.lang.String-java.lang.String-java.lang.String-java.lang.String-io.minio.CopyConditions-)
+
+__参数__
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 源存储桶名称。 |
+| ``objectName`` | _String_ | 源存储桶中的源对象名称。 |
+| ``destBucketName`` | _String_ | 目标存储桶名称。 |
+| ``destObjectName`` | _String_ | 要创建的目标对象名称,如果为空,默认为源对象名称。|
+| ``copyConditions`` | _CopyConditions_ | 拷贝操作的一些条件Map。|
+| ``metadata`` | _Map_ | 给目标对象的元数据Map。|
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+__示例__
+
+本API执行了一个服务端的拷贝操作。
+
+```java
+try {
+ CopyConditions copyConditions = new CopyConditions();
+ copyConditions.setMatchETagNone("TestETag");
+
+ minioClient.copyObject("mybucket", "island.jpg", "mydestbucket", "processed.png", copyConditions);
+ System.out.println("island.jpg is uploaded successfully");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### removeObject(String bucketName, String objectName)
+
+`public void removeObject(String bucketName, String objectName)`
+
+删除一个object。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeObject-java.lang.String-java.lang.String-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+
+__示例__
+
+
+```java
+try {
+ // 从mybucket中删除myobject。
+ minioClient.removeObject("mybucket", "myobject");
+ System.out.println("successfully removed mybucket/myobject");
+} catch (MinioException e) {
+ System.out.println("Error: " + e);
+}
+```
+
+
+### removeObject(String bucketName, Iterable objectNames)
+
+`public Iterable> removeObject(String bucketName, Iterable objectNames)`
+
+删除多个object。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeObject-java.lang.String-java.lang.String-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectNames`` | _Iterable_ | 含有要删除的多个object名称的迭代器对象。 |
+
+|返回值类型 | 异常 |
+|:--- |:--- |
+| ``Iterable>``:an iterator of Result DeleteError. | _None_ |
+
+
+
+__示例__
+
+
+```java
+List objectNames = new LinkedList();
+objectNames.add("my-objectname1");
+objectNames.add("my-objectname2");
+objectNames.add("my-objectname3");
+try {
+ // 删除my-bucketname里的多个对象
+ for (Result errorResult: minioClient.removeObject("my-bucketname", objectNames)) {
+ DeleteError error = errorResult.get();
+ System.out.println("Failed to remove '" + error.objectName() + "'. Error:" + error.message());
+ }
+} catch (MinioException e) {
+ System.out.println("Error: " + e);
+}
+```
+
+
+### removeIncompleteUpload(String bucketName, String objectName)
+
+`public void removeIncompleteUpload(String bucketName, String objectName)`
+
+删除一个未完整上传的对象。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeIncompleteUpload-java.lang.String-java.lang.String-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| None | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``NoResponseException`` : 服务器无响应。 |
+| | ``IOException`` : 连接异常。 |
+| | ``org.xmlpull.v1.XmlPullParserException`` : 解析返回的XML异常。 |
+| | ``ErrorResponseException`` : 执行失败异常。 |
+| | ``InternalException`` : 内部错误。 |
+
+
+__示例__
+
+
+```java
+try {
+ // 从存储桶中删除名为myobject的未完整上传的对象。
+ minioClient.removeIncompleteUpload("mybucket", "myobject");
+ System.out.println("successfully removed all incomplete upload session of my-bucketname/my-objectname");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+## 4. Presigned操作
+
+
+### presignedGetObject(String bucketName, String objectName, Integer expires)
+`public String presignedGetObject(String bucketName, String objectName, Integer expires)`
+
+生成一个给HTTP GET请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行下载,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,默认值是7天。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#presignedGetObject-java.lang.String-java.lang.String-java.lang.Integer-)
+
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``expiry`` | _Integer_ | 失效时间(以秒为单位),默认是7天,不得大于七天。 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``String`` : string contains URL to download the object. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``InvalidKeyException`` : 不合法的access key或者secret key。 |
+| | ``IOException`` : 连接异常。 |
+| | ``NoSuchAlgorithmException`` : 找不到相应的签名算法。 |
+| | ``InvalidExpiresRangeException`` : presigned URL已经过期了。 |
+
+
+__示例__
+
+
+```java
+try {
+ String url = minioClient.presignedGetObject("mybucket", "myobject", 60 * 60 * 24);
+ System.out.println(url);
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### presignedPutObject(String bucketName, String objectName, Integer expires)
+
+`public String presignedPutObject(String bucketName, String objectName, Integer expires)`
+
+生成一个给HTTP PUT请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行上传,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,默认值是7天。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#presignedPutObject-java.lang.String-java.lang.String-java.lang.Integer-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``bucketName`` | _String_ | 存储桶名称。 |
+| ``objectName`` | _String_ | 存储桶里的对象名称。 |
+| ``expiry`` | _Integer_ | 失效时间(以秒为单位),默认是7天,不得大于七天。 |
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``String`` : string contains URL to download the object. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``InvalidKeyException`` : 不合法的access key或者secret key。 |
+| | ``IOException`` : 连接异常。 |
+| | ``NoSuchAlgorithmException`` : 找不到相应的签名算法。 |
+| | ``InvalidExpiresRangeException`` : presigned URL已经过期了。 |
+
+
+__示例__
+
+```java
+try {
+ String url = minioClient.presignedPutObject("mybucket", "myobject", 60 * 60 * 24);
+ System.out.println(url);
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+}
+```
+
+
+### presignedPostPolicy(PostPolicy policy)
+
+`public Map presignedPostPolicy(PostPolicy policy)`
+
+允许给POST请求的presigned URL设置策略,比如接收对象上传的存储桶名称的策略,key名称前缀,过期策略。
+
+[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#presignedPostPolicy-io.minio.PostPolicy-)
+
+__参数__
+
+
+|参数 | 类型 | 描述 |
+|:--- |:--- |:--- |
+| ``policy`` | _PostPolicy_ | 对象的post策略 |
+
+
+| 返回值类型 | 异常 |
+|:--- |:--- |
+| ``Map``: Map of strings to construct form-data. | 异常列表: |
+| | ``InvalidBucketNameException`` : 不合法的存储桶名称。 |
+| | ``InvalidKeyException`` : 不合法的access key或者secret key。 |
+| | ``IOException`` : 连接异常。 |
+| | ``NoSuchAlgorithmException`` : 找不到相应的签名算法。 |
+
+
+
+__示例__
+
+```java
+try {
+ PostPolicy policy = new PostPolicy("mybucket", "myobject",
+ DateTime.now().plusDays(7));
+ policy.setContentType("image/png");
+ Map formData = minioClient.presignedPostPolicy(policy);
+ System.out.print("curl -X POST ");
+ for (Map.Entry entry : formData.entrySet()) {
+ System.out.print(" -F " + entry.getKey() + "=" + entry.getValue());
+ }
+ System.out.println(" -F file=@/tmp/userpic.png https://play.minio.io:9000/mybucket");
+} catch(MinioException e) {
+ System.out.println("Error occurred: " + e);
+```
+
+## 5. 了解更多
+
+
+- [创建属于你的照片API服务示例](https://docs.minio.io/docs/java-photo-api-service)
+- [完整的JavaDoc](http://minio.github.io/minio-java/)
diff --git a/docs/zh_CN/CONTRIBUTING.md b/docs/zh_CN/CONTRIBUTING.md
new file mode 100644
index 000000000..c911f0e8b
--- /dev/null
+++ b/docs/zh_CN/CONTRIBUTING.md
@@ -0,0 +1,9 @@
+# 贡献者指南
+* Fork minio-java.
+* 创建你的分支 (`$ git checkout -b my-new-feature`)。
+* 敲代码,写代码...
+* Commit你的修改(`$ git commit -am 'Add some feature'`)。
+* 构建测试包 (`$ ./gradlew build`)。
+* 功能测试 (`$ ./gradlew runFunctionalTest`)。
+* Push到你的分支 (`$ git push origin my-new-feature`)。
+* 创建一个Pull Request。
diff --git a/docs/zh_CN/MAINTAINERS.md b/docs/zh_CN/MAINTAINERS.md
new file mode 100644
index 000000000..bb931613a
--- /dev/null
+++ b/docs/zh_CN/MAINTAINERS.md
@@ -0,0 +1,61 @@
+# 仅供维护者阅读
+Minio Java SDK使用[gradle](https://gradle.org/)进行构建。
+
+## 职责
+请查阅[维护者职责说明](https://gist.github.com/abperiasamy/f4d9b31d3186bbd26522).
+
+## 设置你的minio-java Github仓库。
+Clone [minio-java](https://github.com/minio/minio-java/)到你本地。
+```sh
+$ git clone https://github.com/minio/minio-java
+$ cd minio-java
+```
+
+### 构建并验证
+运行 `runFunctionalTest` gradle任务进行构建并验证。
+```sh
+$ ./gradlew runFunctionalTest
+```
+
+## 发布新的artifacts
+#### 设置你的gradle properties
+创建一个新的gradle properties文件
+```sh
+$ cat > ${HOME}/.gradle/gradle.properties <' ..
+```
From d450cf3cb7869168f4b6e2873732744a0315a8fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=81=E5=BB=BA=E6=B0=B4?=
Date: Mon, 13 Nov 2017 21:48:22 +0800
Subject: [PATCH 2/4] remove the MAINTAINERS.md Chinese version.
---
docs/zh_CN/MAINTAINERS.md | 61 ---------------------------------------
1 file changed, 61 deletions(-)
delete mode 100644 docs/zh_CN/MAINTAINERS.md
diff --git a/docs/zh_CN/MAINTAINERS.md b/docs/zh_CN/MAINTAINERS.md
deleted file mode 100644
index bb931613a..000000000
--- a/docs/zh_CN/MAINTAINERS.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# 仅供维护者阅读
-Minio Java SDK使用[gradle](https://gradle.org/)进行构建。
-
-## 职责
-请查阅[维护者职责说明](https://gist.github.com/abperiasamy/f4d9b31d3186bbd26522).
-
-## 设置你的minio-java Github仓库。
-Clone [minio-java](https://github.com/minio/minio-java/)到你本地。
-```sh
-$ git clone https://github.com/minio/minio-java
-$ cd minio-java
-```
-
-### 构建并验证
-运行 `runFunctionalTest` gradle任务进行构建并验证。
-```sh
-$ ./gradlew runFunctionalTest
-```
-
-## 发布新的artifacts
-#### 设置你的gradle properties
-创建一个新的gradle properties文件
-```sh
-$ cat > ${HOME}/.gradle/gradle.properties <' ..
-```
From 9a1ab51190c17ab927055a872b780bb512aaa942 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=81=E5=BB=BA=E6=B0=B4?=
Date: Mon, 20 Nov 2017 20:26:45 +0800
Subject: [PATCH 3/4] translate the missing part.
---
docs/zh_CN/API.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/docs/zh_CN/API.md b/docs/zh_CN/API.md
index 71aa60a18..e91ea2559 100644
--- a/docs/zh_CN/API.md
+++ b/docs/zh_CN/API.md
@@ -32,60 +32,60 @@ MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSK
| |
|---|
|`public MinioClient(String endpoint) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given endpoint using anonymous access. |
+| 使用给定的endpoint以及匿名方式创建一个Minio client对象。|
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-) |
| |
|---|
|`public MinioClient(URL url) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given url using anonymous access. |
+| 使用给定的url以及匿名方式创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.net.URL-) |
| |
|---|
| `public MinioClient(com.squareup.okhttp.HttpUrl url) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-|Creates Minio client object with given HttpUrl object using anonymous access. |
+|使用给定的HttpUrl以及匿名方式创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-com.squareup.okhttp.HttpUrl-) |
| |
|---|
| `public MinioClient(String endpoint, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given endpoint, access key and secret key. |
+| 使用给定的endpoint、access key和secret key创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-java.lang.String-java.lang.String-)|
| |
|---|
| `public MinioClient(String endpoint, int port, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given endpoint, port, access key and secret key using secure (HTTPS) connection. |
+| 使用给定的endpoint、port、access key和secret key创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-int-java.lang.String-java.lang.String-) |
| |
|---|
| `public MinioClient(String endpoint, String accessKey, String secretKey, boolean secure) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given endpoint, access key and secret key using secure (HTTPS) connection. |
+| 使用给定的endpoint、access key、secret key和一个secure选项(是否使用https)创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-java.lang.String-java.lang.String-boolean-) |
| |
|---|
| `public MinioClient(String endpoint, int port, String accessKey, String secretKey, boolean secure) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object using given endpoint, port, access key, secret key and secure option. |
+| 使用给定的endpoint、port、access key、secret key和一个secure选项(是否使用https)创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.lang.String-int-java.lang.String-java.lang.String-boolean-) |
| |
|---|
| `public MinioClient(com.squareup.okhttp.HttpUrl url, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given URL object, access key and secret key. |
+| 使用给定的HttpUrl对象、access key、secret key创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-com.squareup.okhttp.HttpUrl-java.lang.String-java.lang.String-) |
| |
|---|
| `public MinioClient(URL url, String accessKey, String secretKey) throws NullPointerException, InvalidEndpointException, InvalidPortException` |
-| Creates Minio client object with given URL object, access key and secret key. |
+| 使用给定的URL对象、access key、secret key创建一个Minio client对象。 |
| [查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#MinioClient-java.net.URL-java.lang.String-java.lang.String-) |
From b475de91778f432ea240d4ee179d931469933995 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=81=E5=BB=BA=E6=B0=B4?=
Date: Mon, 27 Nov 2017 20:41:14 +0800
Subject: [PATCH 4/4] Got reviewed by yihuaf,fix the issues.
---
README_zh_CN.md | 18 +++++++++---------
docs/zh_CN/API.md | 13 +++++--------
docs/zh_CN/CONTRIBUTING.md | 2 +-
3 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/README_zh_CN.md b/README_zh_CN.md
index 065243ff9..e77f22088 100644
--- a/README_zh_CN.md
+++ b/README_zh_CN.md
@@ -1,11 +1,11 @@
-# 适用于Amazon S3兼容云存储的Minio Java SDK [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io)
+# 适用于与Amazon S3兼容的云存储的Minio Java SDK [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io)
-Minio Java Client SDK提供简单的API来访问任何Amazon S3兼容的对象存储服务。
+Minio Java Client SDK提供简单的API来访问任何与Amazon S3兼容的对象存储服务。
本快速入门指南将向你展示如何安装客户端SDK并执行示例java程序。有关API和示例的完整列表,请查看[Java Client API Reference](http://docs.minio.io/docs/java-client-api-reference)文档。
## 最低需求
-Java 1.7或更高版本:
+Java 1.8或更高版本:
* [OracleJDK 8.0](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
* [OpenJDK8.0](http://openjdk.java.net/install/)
@@ -15,24 +15,24 @@ Java 1.7或更高版本:
io.minio
minio
- 3.0.9
+ 3.0.10
```
## 使用gradle
-```xml
+```
dependencies {
- compile 'io.minio:minio:3.0.9'
+ compile 'io.minio:minio:3.0.10'
}
```
## 直接下载JAR
-你可以到maven仓库直接下载最新版的[JAR](http://repo1.maven.org/maven2/io/minio/minio/3.0.9/)。
+你可以到maven仓库直接下载最新版的[JAR](http://repo1.maven.org/maven2/io/minio/minio/3.0.10/)。
## 快速入门示例-文件上传
本示例程序连接到一个对象存储服务,创建一个存储桶并上传一个文件到该桶中。
-你需要有存储服务的三个属性才能连接到该服务。
+你需要有存储服务的三个参数才能连接到该服务。
| 参数 | 说明 |
| :------- | :------------ |
@@ -41,7 +41,7 @@ dependencies {
| Secret Key | Secret key是你账户的密码。 |
-下面的例子,我们将使用一个运行在[https://play.minio.io:9000](https://play.minio.io:9000)的免费托管的Minio服务。你可以随意使用此服务进行测试和开发。此示例中显示的访问凭据是公开的。
+在下面的例子的中,我们将使用一个运行在[https://play.minio.io:9000](https://play.minio.io:9000)的免费托管的Minio服务。你可以随意使用此服务进行测试和开发。此示例中显示的访问凭据是公开的。
#### FileUploader.java
diff --git a/docs/zh_CN/API.md b/docs/zh_CN/API.md
index e91ea2559..57ac88a2e 100644
--- a/docs/zh_CN/API.md
+++ b/docs/zh_CN/API.md
@@ -868,7 +868,7 @@ __参数__
__示例__
-单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这就当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。
+单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这样,当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。
```java
try {
@@ -932,9 +932,6 @@ __参数__
__示例__
-单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这就当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。
-
-
```java
try {
minioClient.putObject("mybucket", "island.jpg", "/mnt/photos/island.jpg")
@@ -1196,7 +1193,7 @@ try {
`public void removeObject(String bucketName, String objectName)`
-删除一个object。
+删除一个对象。
[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeObject-java.lang.String-java.lang.String-)
@@ -1238,7 +1235,7 @@ try {
`public Iterable> removeObject(String bucketName, Iterable objectNames)`
-删除多个object。
+删除多个对象。
[查看 Javadoc](http://minio.github.io/minio-java/io/minio/MinioClient.html#removeObject-java.lang.String-java.lang.String-)
@@ -1309,11 +1306,11 @@ __示例__
```java
try {
- // 从存储桶中删除名为myobject的未完整上传的对象。
+ // 从存储桶中删除名为myobject的未完整上传的对象。
minioClient.removeIncompleteUpload("mybucket", "myobject");
System.out.println("successfully removed all incomplete upload session of my-bucketname/my-objectname");
} catch(MinioException e) {
- System.out.println("Error occurred: " + e);
+ System.out.println("Error occurred: " + e);
}
```
diff --git a/docs/zh_CN/CONTRIBUTING.md b/docs/zh_CN/CONTRIBUTING.md
index c911f0e8b..93f856b7d 100644
--- a/docs/zh_CN/CONTRIBUTING.md
+++ b/docs/zh_CN/CONTRIBUTING.md
@@ -1,7 +1,7 @@
# 贡献者指南
* Fork minio-java.
* 创建你的分支 (`$ git checkout -b my-new-feature`)。
-* 敲代码,写代码...
+* 敲代码,敲代码...
* Commit你的修改(`$ git commit -am 'Add some feature'`)。
* 构建测试包 (`$ ./gradlew build`)。
* 功能测试 (`$ ./gradlew runFunctionalTest`)。