1:下载压缩文件到本地服务器
public static void main(String[] args) {
try {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
File zipFile = File.createTempFile("example", ".zip");
log.info("zipFile=====" + zipFile.getPath());
minioClient.downloadObject(DownloadObjectArgs.builder().bucket("otatest").object("ya2.zip").filename(zipFile.getAbsolutePath()).build());
}
2:先下载压缩文件,解压出里面的文件,下载到本地服务器指定位置,注意这种下载方式很慢,同时需要注意下载的文件夹目录是否有,不然那会报错
@SneakyThrows
public static void main(String[] args) {
try {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
File zipFile = File.createTempFile("example", ".zip");
log.info("zipFile=====" + zipFile.getPath());
minioClient.downloadObject(DownloadObjectArgs.builder().bucket("otatest").object("模板2.zip").filename(zipFile.getAbsolutePath()).build());
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipFile),Charset.forName("GBK"));
ZipEntry zipEntry = zipInputStream.getNextEntry();
while (zipEntry != null) {
File entryFile = new File(zipEntry.getName());
File file = new File("C:\\Users\\dell\\Desktop\\22\\" + StringUtils.getFilename(entryFile.getName()));
org.springframework.util.FileCopyUtils.copy(entryFile, file);
zipEntry = zipInputStream.getNextEntry();
}
zipInputStream.closeEntry();
zipInputStream.close();
zipFile.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
3:获取压缩文件流(这种方式比下载压缩文件快),解压出里面的文件,下载到本地服务器指定位置,注意这种下载方式很慢,同时需要注意下载的文件夹目录是否有,不然那会报错
@SneakyThrows
public static void main(String[] args) {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
ZipInputStream zis = null;
long s = System.currentTimeMillis();
try (InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build())) {
System.out.println(System.currentTimeMillis() - s);
zis = new ZipInputStream(is, Charset.forName("UTF-8"));
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
if (entry.isDirectory()) {
new File(entry.getName()).mkdirs();
} else {
FileOutputStream fos = new FileOutputStream(StringUtils.getFilename(entry.getName()));
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
zis.closeEntry();
Files.delete(Paths.get(StringUtils.getFilename(entry.getName())));
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (zis != null) {
zis.close();
}
}
}
4:获取压缩文件流(这种方式比下载压缩文件快),获取压缩文件里的每一个文件流,进行操作,上传到minio
@SneakyThrows
public static void main(String[] args) {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
ZipInputStream zis = null;
try (InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build())) {
zis = new ZipInputStream(is, Charset.forName("GBK"));
ZipEntry entry;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
while ((entry = zis.getNextEntry()) != null) {
if (entry.isDirectory()) {
new File(entry.getName()).mkdirs();
} else {
while (true) {
int len = zis.read(bytes);
if (len <= 0) {
break;
}
bos.write(bytes);
}
bos.flush();
bos.close();
zis.closeEntry();
InputStream bis = new ByteArrayInputStream(bos.toByteArray());
minioClient.putObject(PutObjectArgs.builder()
.bucket("otatest")
.object(entry.getName())
.stream(bis, -1L, 10485760L)
.build());
bis.close();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (zis != null) {
zis.close();
}
}
}
5:可以从压缩文件下载指定的文件
@SneakyThrows
public static void main13(String[] args) {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
ZipInputStream zipIn = null;
InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build());
zipIn = new ZipInputStream(is, Charset.forName("GBK"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
ZipEntry zipEntry;
String[] files = {
"java.txt"};
while ((zipEntry = zipIn.getNextEntry()) != null) {
for (String fileName:files) {
if (zipEntry.getName().equals(fileName)) {
while (true) {
int len = zipIn.read(bytes);
if (len <= 0) {
break;
}
bos.write(bytes);
}
bos.flush();
bos.close();
}
}
}
InputStream bis = new ByteArrayInputStream(bos.toByteArray());
bos.close();
zipIn.closeEntry();
zipIn.close();
bis.close();
}
6:获取压缩文件流(这种方式比下载压缩文件快),获取压缩文件里的每一个文件流,进行操作,上传到minio,这种方式推荐使用,最快
@SneakyThrows
public static void main(String[] args) {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://" + "192.168.16.188:9000")
.credentials("admin", "admin123456")
.build();
CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
ZipInputStream zipIn = null;
try {
InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build());
zipIn = new ZipInputStream(is, Charset.forName("GBK"));
ZipEntry zipEntry;
int i = 11;
while ((zipEntry = zipIn.getNextEntry()) != null) {
++i;
if (zipEntry.getSize() == 0) continue;
minioClient.putObject(PutObjectArgs.builder()
.bucket("otatest")
.object(i + "")
.stream(zipIn, -1L, 10485760L)
.build());
zipIn.closeEntry();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (zipIn!=null) zipIn.closeEntry();
if (zipIn!=null) zipIn.close();
}
}