当前位置: 首页 > news >正文

苏州网站建设师九江seo优化

苏州网站建设师,九江seo优化,用asp做网站需要的软件,js做网站跳转一、前言 各位亲爱的们,之前介绍过了上传超大文件到MinIO: MinIO分片上传超大文件(纯服务端)MinIO分片上传超大文件(非纯服务端) 这里最后再补充一下从MinIO下载超大文件。 二、从MinIO分片下载大文件 …

一、前言

各位亲爱的们,之前介绍过了上传超大文件到MinIO:

  • MinIO分片上传超大文件(纯服务端)
  • MinIO分片上传超大文件(非纯服务端)

这里最后再补充一下从MinIO下载超大文件。

二、从MinIO分片下载大文件

2.1、确定文件大小

根据文件名查找MinIO上对应文件的大小。

核心API:minioClient.statObject(StatObjectArgs args)

StatObjectResponse statObjectResponse = minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(fileName).build());
long totalLength = statObjectResponse.size();
System.out.println("目标文件总大小: " + totalLength);

2.2、分片下载

这里举例分片大小为1000个字节,根据文件总大小计算出分片数,最后将每个分片保存下来。

核心API:minioClient.getObject(GetObjectArgs args)

final long CHUNK_LENGTH = 1000;
// 从目标文件开始下载
long startByte = 0l;
long chunkCount = (long) Math.ceil((double) totalLength / CHUNK_LENGTH);
System.out.println("预计总分片数: " + chunkCount);
String targetPath = "C://tmp";
for (long i = 0; i < chunkCount; i++) {GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).offset(startByte).length(CHUNK_LENGTH).build());String chunkFilePath = targetPath + "//" + (i + 1) + ".part";FileOutputStream fileOutputStream = new FileOutputStream(chunkFilePath);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = response.read(buffer)) != -1) {fileOutputStream.write(buffer, 0, bytesRead);}System.out.println("分片已下载: " + chunkFilePath + " 大小: " + new File(chunkFilePath).length());startByte = (i + 1) * CHUNK_LENGTH;
}

2.3、合并分片

将每个分片文件合并到一个文件里。

String mergedFilePath = targetPath + "//" + "result.txt";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(mergedFilePath));
for (long i = 0; i < chunkCount; i++) {String chunkFilePath = targetPath + "//" + (i + 1) + ".part";BufferedInputStream bis = new BufferedInputStream(new FileInputStream(chunkFilePath));byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bis.read(buffer)) != -1) {bos.write(buffer, 0, bytesRead);}bis.close();
}
bos.close();

三、完整测试代码

import io.minio.*;
import java.io.*;public class MinioMain4Download {static CustomMinioClient minioClient = new CustomMinioClient(MinioClient.builder().endpoint("http://192.168.2.195:9000").credentials("minioUser", "minioUser123").build());// 测试桶static String bucketName = "test";static {try {boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}} catch (Exception e) {throw new RuntimeException(e);}}public static void main(String[] args) throws Exception {// 大小 1295 ByteString fileName = "202410181656357348160";// 第一步:查询目标文件大小StatObjectResponse statObjectResponse = minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(fileName).build());long totalLength = statObjectResponse.size();System.out.println("目标文件总大小: " + totalLength);// 第二步:分片下载(最简单的同步方式)// 假设1000个字节作为一个分片final long CHUNK_LENGTH = 1000;// 从目标文件开始下载long startByte = 0l;long chunkCount = (long) Math.ceil((double) totalLength / CHUNK_LENGTH);System.out.println("预计总分片数: " + chunkCount);String targetPath = "C://tmp";for (long i = 0; i < chunkCount; i++) {GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).offset(startByte).length(CHUNK_LENGTH).build());String chunkFilePath = targetPath + "//" + (i + 1) + ".part";FileOutputStream fileOutputStream = new FileOutputStream(chunkFilePath);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = response.read(buffer)) != -1) {fileOutputStream.write(buffer, 0, bytesRead);}System.out.println("分片已下载: " + chunkFilePath + " 大小: " + new File(chunkFilePath).length());startByte = (i + 1) * CHUNK_LENGTH;}// 第三步:合并String mergedFilePath = targetPath + "//" + "result.txt";BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(mergedFilePath));for (long i = 0; i < chunkCount; i++) {String chunkFilePath = targetPath + "//" + (i + 1) + ".part";BufferedInputStream bis = new BufferedInputStream(new FileInputStream(chunkFilePath));byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bis.read(buffer)) != -1) {bos.write(buffer, 0, bytesRead);}bis.close();}bos.close();System.out.println("合并完成");}
}
http://www.mnyf.cn/news/38208.html

相关文章:

  • 什么网站容易做百度权重企业网络营销案例分析
  • 西安做网站费用百度图片搜索图片识别
  • 网站建设账务处理衡阳百度推广
  • 一级a做爰片免费网站短视频播放推广软件有哪些
  • 114网站制作可以进入任何网站的浏览器
  • 提高整个网站权重seo网络公司
  • 用易语言做钓鱼网站免费网站怎么注册
  • 石家庄整站优化百度站长平台官网登录入口
  • 迪奥生物做图网站百度图片搜索
  • 玉树网站建设镇江市网站
  • 上海大学生做网站的团队北京网站seo服务
  • 龙华营销型网站制作哪家好谷歌搜索引擎为什么打不开
  • 营销网站建设维护上海高玩seo
  • 示范校建设平台网站典型案例网络营销的手段包括
  • 推荐做那个的电影网站重庆seo网站推广优化
  • 长沙岳麓区房价seo搜索引擎优化名词解释
  • 金融网站开发目的百度收录快速提交
  • 做网站坚持多少年会有起色seo优化技术培训
  • 朝阳区手机网站制作服务seo系统源码出售
  • 2021好心人给个开车的网站优化关键词的步骤
  • 赣州网上商城系统seo报名在线咨询
  • 贵阳市观山湖区网站建设济南百度快照推广公司
  • 品牌网站建设可信大蝌蚪店铺如何运营和推广
  • 徐州网站平台搜索引擎环境优化
  • 网站开发构成俄罗斯搜索引擎yandex官网入口
  • 现在做个人网站长尾关键词爱站
  • 遂宁网站seo灰色项目推广渠道
  • 网站建设设计语言软文网站发布平台
  • 如何做直播网站百度搜索引擎地址
  • 宁波工业设计公司排名怎么做seo