在Java中使用MinIO的minio-java
SDK版本8.5.6及更高版本进行对象复制时,尽管CopyObjectArgs
类的基本用法没有显著变化,但构造参数的方式进行了优化。自某个版本起,源对象信息不再直接在构建器中设置,而是通过一个特殊的CopySource
类来表示。
以下是使用版本8.5.6或更高版本的示例代码:
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import io.minio.messages.CopySource;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class MinioCopyObject {
public static void main(String[] args)
throws NoSuchAlgorithmException, IOException, InvalidKeyException, MinioException {
// 创建一个MinioClient对象
MinioClient minioClient = new MinioClient("http://your-minio-server:9000", "accessKey", "secretKey");
// 设置源bucket、源对象名、目标bucket和目标对象名
String srcBucketName = "source-bucket";
String srcObjectName = "folder1/source-file.txt";
String destBucketName = "destination-bucket";
String destObjectName = "folder2/copied-file.txt";
// 创建CopySource对象
CopySource copySource = CopySource.builder()
.bucket(srcBucketName)
.object(srcObjectName)
.build();
// 可以设置额外的复制选项,例如修改元数据等
CopyConditions copyConditions = null; // 默认不设置任何条件
// 构建CopyObjectArgs实例
CopyObjectArgs.Builder builder = CopyObjectArgs.builder()
.source(copySource)
.bucket(destBucketName)
.object(destObjectName);
// 如果有复制条件,可以添加到构建器中
if (copyConditions != null) {
builder.copyConditions(copyConditions);
}
CopyObjectArgs copyObjectArgs = builder.build();
// 执行对象复制操作
minioClient.copyObject(copyObjectArgs);
System.out.println("Successfully copied object `" + srcObjectName + "` from bucket `" +
srcBucketName + "` to `" + destObjectName + "` in bucket `" + destBucketName + "`");
}
}
在这个例子中,我们首先创建了一个CopySource
对象来封装源对象的信息(包括源bucket名称和源对象名称),然后将这个CopySource
对象作为CopyObjectArgs
的构建参数。其他部分与之前版本的使用方式相同,包括可选的复制条件以及实际执行复制操作的部分。同样,请确保替换为你的实际服务器地址和凭证信息以及要操作的对象名称和桶名。