private final MinioClient minioClient;
@Value("${mti.framework.minio.namespace}")
private String namespace;
/**
* 获取minio文件的目录或者列表
* @param prefix 目录名
* @param namespace 桶
* @param isOnlyFolder 是否是获取目录
* @param recursive 是否递归查询minio文件
* @return MinioVO
* @throws InvalidBucketNameException
* @throws InsufficientDataException
* @throws XmlPullParserException
* @throws ErrorResponseException
* @throws NoSuchAlgorithmException
* @throws IOException
* @throws NoResponseException
* @throws InvalidKeyException
* @throws InternalException
*/
private List<MinioVO> processFileList(String prefix,String namespace,Boolean isOnlyFolder,Boolean recursive) throws InvalidBucketNameException, InsufficientDataException, XmlPullParserException, ErrorResponseException, NoSuchAlgorithmException, IOException, NoResponseException, InvalidKeyException, InternalException {
Iterable<Result<Item>> results =
minioClient.listObjects(namespace,prefix,recursive);
List<MinioVO> files = new ArrayList<>(Collections.emptyList());
List<MinioVO> folders = new ArrayList<>(Collections.emptyList());
for (Result<Item> result : results) {
MinioVO file = new MinioVO();
Item item = result.get();
//是否为文件夹
boolean isDir = item.isDir();
int i = item.objectName().lastIndexOf("/");
file.setFileName(isDir?item.objectName():getFolderName(item.objectName()));
file.setFolderName(isDir?getFolderName(item.objectName()):i==-1?"/":item.objectName().substring(0,i));
file.setFileType(!isDir?item.objectName().substring(item.objectName().lastIndexOf(".")+1):"folder");
file.setDepartName(item.objectName().substring(0,item.objectName().indexOf("/")));
file.setIsFolder(isDir);
files.add(file);
}
for (MinioVO s : files) {
if (s.getIsFolder()) {
s.setChildren(processFileList(s.getFileName(),namespace,isOnlyFolder,recursive));
folders.add(s);
}
}
return isOnlyFolder?folders:files;
}
获取minio 目录和文件
最新推荐文章于 2025-04-16 15:02:24 发布