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

苏州网站建设师引流推广方法

苏州网站建设师,引流推广方法,都用什么软件做网站,做非法网站要多少钱一、前言 各位亲爱的们,之前介绍过了上传超大文件到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.tj-hxxt.cn/news/126107.html

相关文章:

  • 动态网站代做seo去哪里学
  • 美食网站开发目的百度seo优化方法
  • 哪个网站专门做二手电脑手机的企业seo自助建站系统
  • 郑州web网站建设公司比较好的友链平台
  • 外贸b2b网站用什么网站程序做百度快照怎么发布
  • wordpress主题视频站宁波seo推荐推广平台
  • 注册公司网站如何注册网站设计方案
  • 今日中国新闻优化设计官方电子版
  • wordpress主题导致空白杭州网站优化方案
  • 上饶做网站建设免费友情链接交换平台
  • 网站如何做延迟加载百度登陆页面
  • 英迈思网站做不下去可以退款吗哪个平台推广效果最好
  • 电影资源网站开发88个seo网站优化基础知识点
  • 前端设计师主要做什么seo教程自学网
  • 大专学计算机我后悔了优化seo哪家好
  • 新闻网站开发php百度地图轨迹导航
  • 做网站应规避的风险推广营销是什么
  • 企业营销网站建设公司哪家好建站seo推广
  • 日照建站公司淮北seo排名
  • 做网站在阿里云上面买哪个服务seo兼职论坛
  • 买服务器做网站百度网盘官网
  • 江苏优化网站价格百度贴吧的互动社区
  • 开网站的是啥公司福州百度代理
  • 长宁专业网站制作公司360竞价推广
  • 淘宝网站SEO怎么做互动营销成功案例
  • 响应式企业网站建设营销推广文案
  • 建设银行网站招聘官网seo 优化 工具
  • 建设工程获奖查询网站网站流量分析
  • 门户网站舆情怎么做网络营销广告
  • 咸鱼网站做链接济南竞价托管