minio 根据文件名批量删除文件java工具类
时间: 2023-10-18 14:24:16 浏览: 176
你可以使用 MinIO Java SDK 来编写一个工具类来删除指定前缀的文件。以下是一个示例代码:
```java
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class MinioDeleteUtil {
private static final String ENDPOINT = "your-minio-endpoint";
private static final String ACCESS_KEY = "your-access-key";
private static final String SECRET_KEY = "your-secret-key";
private static final String BUCKET_NAME = "your-bucket-name";
private static final int MAX_KEYS = 1000;
public static void deleteByPrefix(String prefix) throws IOException, NoSuchAlgorithmException, InvalidKeyException, MinioException {
MinioClient minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY);
boolean isComplete = false;
String marker = null;
while (!isComplete) {
Iterable<io.minio.Result<io.minio.objects.ObjectItem>> results = minioClient.listObjects(BUCKET_NAME, prefix, true, marker, MAX_KEYS);
for (io.minio.Result<io.minio.objects.ObjectItem> result : results) {
io.minio.objects.ObjectItem item = result.get();
minioClient.removeObject(BUCKET_NAME, item.objectName());
}
if (!results.iterator().hasNext()) {
isComplete = true;
} else {
marker = results.iterator().next().get().objectName();
}
}
}
}
```
在这个工具类中,我们使用了 Minio Java SDK 中的 `listObjects` 方法来获取指定前缀的所有文件,然后使用 `removeObject` 方法来删除这些文件。我们使用了一个循环来处理所有匹配的文件,因为 `listObjects` 方法每次只返回最多 1000 个文件。
阅读全文