检查存储桶是否存在。方法声明如下:
public boolean bucketExists(String bucketName)
其中:
bucketName:存储桶名称
创建一个新的存储桶,方法声明如下:
public void makeBucket(String bucketName) public void makeBucket(String bucketName, String region) public void makeBucket(String bucketName, String region, boolean objectLock)
其中:
bucketName:存储桶名称
region:存储桶所属区域
objectLock:是否启动对象锁,true-启用;false-不启用
先使用 bucketExists() 方法判断存储桶是否存在,如果存储桶不存在,则使用 makeBucket() 方法创建存储桶。代码如下:
package com.hxstrive.minio.demos.bucket;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
/**
 * 创建存储桶
 * @author Administrator 2021/7/20 13:16
 * @version 1.0
 */
public class MakeBucket {
    /** MinioClient.makeBucket() example. */
    public static void main(String[] args) throws Exception {
        try {
            MinioClient minioClient = new MinioClient(
                    "http://127.0.0.1:9000",
                    "root", "mypassword");
            // 如果不存在,则创建存储桶 “my-bucketname”
            if (!minioClient.bucketExists("my-bucketname")) {
                minioClient.makeBucket("my-bucketname");
                System.out.println("my-bucketname is created successfully");
            }
            // 如果不存在,则在 “eu-west-1” 区域中创建存储桶 “my-bucketname-in-eu”
            if (!minioClient.bucketExists("my-bucketname-in-eu")) {
                minioClient.makeBucket("my-bucketname-in-eu", "eu-west-1");
                System.out.println("my-bucketname-in-eu is created successfully");
            }
            // 在启用对象锁定功能的 “eu-west-1” 中创建存储桶 “my-bucketname-in-eu-with-object-lock”。
            if (!minioClient.bucketExists("my-bucketname-in-eu-with-object-lock")) {
                minioClient.makeBucket("my-bucketname-in-eu-with-object-lock",
                        "eu-west-1", true);
                System.out.println("my-bucketname-in-eu-with-object-lock is created successfully");
            }
        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
}列出 MinIO 中所有存储桶。方法声明如下:
public List<Bucket> listBuckets()
实例:在控制台输出当前 MinIO 服务中所有的存储桶信息,代码如下:
package com.hxstrive.minio.demos.bucket;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import io.minio.messages.Bucket;
import java.util.List;
/**
 * 获取 MinIO 中所有的存储桶
 * @author Administrator 2021/7/16 13:50
 * @version 1.0
 */
public class ListBuckets {
    /** MinioClient.listBuckets() example. */
    public static void main(String[] args) throws Exception {
        try {
            MinioClient minioClient = new MinioClient(
                    "http://127.0.0.1:9000",
                    "root", "mypassword");
            // 列出我们至少具有读取权限的存储桶
            List<Bucket> bucketList = minioClient.listBuckets();
            for (Bucket bucket : bucketList) {
                System.out.println(bucket.creationDate() + ", " + bucket.name());
            }
        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
}删除一个存储桶。注意,如果存储桶中存在对象(即存储桶不是一个空的存储桶)removeBucket 删除会失败,你需要通过 removeObject 来删除存储桶下面所有的对象后,才能正常删除存储桶。方法声明如下:
public void removeBucket(String bucketName)
实例:判断 my-bucketname 存储桶是否存在,如果存储桶存在,则删除该存储同。代码如下:
package com.hxstrive.minio.demos.bucket;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
/**
 * 删除存储桶
 * @author Administrator 2021/7/20 13:21
 * @version 1.0
 */
public class RemoveBucket {
    /** MinioClient.removeBucket() example. */
    public static void main(String[] args) throws Exception {
        try {
            MinioClient minioClient = new MinioClient(
                    "http://127.0.0.1:9000",
                    "root", "mypassword");
            // 删除存储桶 “my-bucketname”(如果存在)
            // 此操作仅在您的存储桶为空时才有效
            boolean found = minioClient.bucketExists("my-bucketname");
            if (found) {
                minioClient.removeBucket("my-bucketname");
                System.out.println("my-bucketname is removed successfully");
            } else {
                System.out.println("my-bucketname does not exist");
            }
        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
}列出某个存储桶中的所有对象。方法声明如下:
public Iterable<Result<Item>> listObjects(String bucketName) public Iterable<Result<Item>> listObjects(String bucketName, String prefix) public Iterable<Result<Item>> listObjects(String bucketName, String prefix, boolean recursive) public Iterable<Result<Item>> listObjects(String bucketName, String prefix, boolean recursive, boolean useVersion1) public Iterable<Result<Item>> listObjects(String bucketName, String prefix, boolean recursive, boolean includeUserMetadata, boolean useVersion1)
其中:
bucketName:存储桶名称
prefix:对象名称的前缀
recursive:是否递归查找;如果是false,就模拟文件夹结构查找
useVersion1:如果是 true,使用版本1 REST API
实例:列出 images 存储桶中的对象,代码如下:
package com.hxstrive.minio.demos.bucket;
import io.minio.MinioClient;
import io.minio.Result;
import io.minio.errors.MinioException;
import io.minio.messages.Item;
/**
 * 获取指定存储桶中所有的对象
 * @author Administrator 2021/7/16 13:54
 * @version 1.0
 */
public class ListObjects {
    public static void main(String[] args) throws Exception {
        try {
            MinioClient minioClient = new MinioClient(
                    "http://127.0.0.1:9000",
                    "root", "mypassword");
            {
                // 列出 images 存储桶中的对象信息
                Iterable<Result<Item>> results =
                        minioClient.listObjects("images");
                for (Result<Item> result : results) {
                    Item item = result.get();
                    System.out.println(item.lastModified() + "\t" + item.size()
                            + "\t" + item.objectName());
                }
            }
            System.out.println("============ 分割线 ============");
            {
                // 递归的列出 images 存储桶中对象信息
                Iterable<Result<Item>> results =
                        minioClient.listObjects("images", "300x300", true);
                for (Result<Item> result : results) {
                    Item item = result.get();
                    System.out.println(item.lastModified() + "\t" + item.size()
                            + "\t" + item.objectName());
                }
            }
        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
}列出存储桶中被部分上传的对象(部分上传即不完整对象)。方法声明如下:
public Iterable<Result<Upload>> listIncompleteUploads(String bucketName) public Iterable<Result<Upload>> listIncompleteUploads(String bucketName, String prefix) public Iterable<Result<Upload>> listIncompleteUploads(String bucketName, String prefix, boolean recursive)
其中:
bucketName:存储桶名称
prefix:对象名称的前缀,列出有该前缀的对象
recursive:是否递归查找;如果是 false,就模拟文件夹结构查找
实例:列出存储桶 my-bucketname 中不完整的对象,代码如下:
package com.hxstrive.minio.demos.bucket;
import io.minio.MinioClient;
import io.minio.Result;
import io.minio.errors.MinioException;
import io.minio.messages.Upload;
import java.util.Iterator;
/**
 * 列出存储桶中不完整对象
 * @author Administrator 2021/7/20 13:21
 * @version 1.0
 */
public class ListIncompleteUploadsBucket {
    /** MinioClient.bucketExists() example. */
    public static void main(String[] args) throws Exception {
        try {
            MinioClient minioClient = new MinioClient(
                    "http://127.0.0.1:9000",  "root", "mypassword");
            boolean found = minioClient.bucketExists("my-bucketname");
            if (found) {
                Iterable<Result<Upload>> iterable = minioClient.listIncompleteUploads("my-bucketname");
                Iterator<Result<Upload>> iterator = iterable.iterator();
                while(iterator.hasNext()) {
                    Result<Upload> result = iterator.next();
                    System.out.println(result.get().objectName());
                }
            } else {
                System.out.println("my-bucketname does not exist");
            }
        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
}
            