首先,下载 MinIO 服务器和客户端(mc)。MinIO 为多种平台提供了预编译的二进制文件。
可以通过运行以下命令来下载 MinIO 服务器和客户端 mc:
curl https://dl.min.io/server/minio/release/linux-amd64/minio -o minio
curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc
chmod 755 minio mc
可以从 MinIO 官方网站下载 Windows 版本的二进制文件,并解压到一个目录。
假设已经有一个本地目录 /tmp/data
作为存储桶的数据目录,可以启动 MinIO 服务器如下:
./minio server /tmp/data
如果使用的是 Windows,命令将是:
minio.exe server C:\path\to\data
这将会启动一个 MinIO 服务器,监听默认端口 9000。
为了方便使用 mc
命令,需要设置一些环境变量:
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
mc
接下来初始化 mc
,指定阿里云存储的地址、访问密钥和密钥密码:
./mc config host add myminio http://localhost:9000 minioadmin minioadmin
使用 ls
命令查看当前没有存储桶:
./mc ls myminio
创建一个新的存储桶 mybucket
:
./mc mb myminio/mybucket
上传一个文件到存储桶 mybucket
中:
./mc cp /path/to/local/file myminio/mybucket/myfile
从存储桶 mybucket
下载文件到本地:
./mc cp myminio/mybucket/myfile /path/to/local/destination
列出存储桶 mybucket
中的所有文件:
./mc ls myminio/mybucket
MinIO 提供了一个 Web 控制台界面,可以通过浏览器访问:
http://localhost:9000/minio
minioadmin
和密码 minioadmin
登录。在Java项目中使用MinIO可以非常方便地集成对象存储功能。下面是在Java项目中使用MinIO的快速入门指南,包括如何设置依赖、连接MinIO服务器、创建存储桶、上传文件等操作。
要在Java项目中使用MinIO,首先需要在项目的pom.xml
文件中添加MinIO客户端库的依赖。
<dependencies>
<dependency>
<groupId>io.miniogroupId>
<artifactId>minioartifactId>
<version>8.9.0version>
dependency>
dependencies>
创建一个MinioClient
实例,指定MinIO服务器的URL、访问密钥和密钥密码。
import io.minio.MinioClient;
public class MinioClientExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用makeBucket
方法创建一个名为mybucket
的新存储桶。
import io.minio.MinioClient;
import io.minio.errors.MinioException;
public class CreateBucketExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 创建存储桶
minioClient.makeBucket(bucketName);
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}
使用putObject
方法将一个本地文件上传到存储桶中。
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.MinioException;
import java.io.File;
public class UploadFileExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
String objectName = "testfile.txt";
File file = new File("/path/to/testfile.txt");
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 上传文件
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.filename(file.getAbsolutePath())
.build());
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}
使用getObject
方法从存储桶中下载文件。
import io.minio.MinioClient;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.errors.MinioException;
import java.io.File;
import java.net.URL;
public class DownloadFileExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
String objectName = "testfile.txt";
String downloadPath = "/path/to/downloaded/file.txt";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 获取文件下载链接
URL url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket(bucketName)
.object(objectName)
.build());
// 下载文件
// 使用 Java IO 或其他方式从 URL 下载文件到本地
// 这里仅展示获取 URL 的过程
System.out.println("Download URL: " + url);
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}
使用listObjects
方法列出存储桶中的所有对象。
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import java.util.List;
import java.util.stream.Collectors;
public class ListObjectsExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 列出存储桶中的所有对象
List<String> objects = minioClient.listObjects(bucketName).stream()
.map(io.minio.ObjectListing.Item::objectName)
.collect(Collectors.toList());
System.out.println("Objects in bucket: " + objects);
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}
使用removeObject
方法删除存储桶中的对象。
import io.minio.MinioClient;
import io.minio.RemoveObjectArgs;
import io.minio.errors.MinioException;
public class DeleteObjectExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
String objectName = "testfile.txt";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 删除对象
minioClient.removeObject(RemoveObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}
使用removeBucket
方法删除存储桶。
import io.minio.MinioClient;
import io.minio.RemoveBucketArgs;
import io.minio.errors.MinioException;
public class DeleteBucketExample {
public static void main(String[] args) throws Exception {
String endpoint = "http://localhost:9000";
String accessKey = "minioadmin";
String secretKey = "minioadmin";
String bucketName = "mybucket";
try {
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 删除存储桶
minioClient.removeBucket(RemoveBucketArgs.builder()
.bucket(bucketName)
.build());
} catch (MinioException e) {
System.err.println("Error occurred: " + e);
}
}
}