热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Minio开启线程上传文件夹下的所有文件

如何使用:FIeViewer.getListFiles在java获取文件夹下的所有文和大小publicstaticvoidmain(String[]args){Str

如何使用:FIeViewer.getListFiles在java获取文件夹下的所有文和大小

public static void main(String[] args) {String ip &#61;"162.245.236.170";String accKey &#61;"HSCBKASDKLKL";String serKey &#61; "ASNXCJNASJnjksancascjnkjasc";MinioUtil minioUtil &#61; new MinioUtil(ip,accKey,serKey);String m3u8RootPath &#61;"C:\\Users\\NING MEI\\Desktop\\FFmpeg切片测试";//m3u8文件的跟路径String filmId &#61; "hawhauha";List<String> listFiles &#61; FileViewer.getListFiles(m3u8RootPath, "", true);System.out.println(GsonUtils.toJson(listFiles));startPoll(listFiles,minioUtil,filmId);}

package com.TKW.Minio;import io.minio.MinioClient;
import io.minio.errors.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;public class MinioUtil {private static Logger log &#61; LoggerFactory.getLogger(MinioUtil.class);private static MinioClient minioclient;public MinioUtil(String END_POINT,String ACCESS_KEY, String SECRET_KEY) {String ip &#61; "http://"&#43; END_POINT&#43;":9000";try {minioclient &#61; new MinioClient(ip,ACCESS_KEY,SECRET_KEY);} catch (InvalidEndpointException e) {e.printStackTrace();} catch (InvalidPortException e) {e.printStackTrace();}}/*** minio 桶上传* &#64;param packageName 上传的 桶名字* &#64;param fileName 上传的 文件名* &#64;param suffix 后缀* &#64;param fileUrl 文件路径*/public void push(String packageName, String fileName, String suffix, String fileUrl) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InsufficientDataException, InvalidArgumentException, InternalException, NoResponseException, InvalidBucketNameException, XmlPullParserException, ErrorResponseException {try {boolean isExist &#61;minioclient.bucketExists(packageName);if (isExist){log.info(packageName&#43;"已经存在了");}else {minioclient.makeBucket(packageName);}}catch (Exception e){log.error(e.getMessage());}minioclient.putObject(packageName,fileName&#43;"."&#43;suffix,fileUrl);log.info(fileUrl&#43;fileName&#43;"."&#43;suffix&#43;"插入成功");}/*** 根据 list数目 分配 任务* &#64;param list 文件夹下所有文件的全路径list* &#64;param minioUtil 初始化连接一次的 minioutil &#xff08;避免重复连接&#xff09;* &#64;param filmId 指定 minio 桶下的 文件夹名字*/public static void startPoll(List<String> list, MinioUtil minioUtil, String filmId){int length &#61; list.size();int num &#61; 5; //初始线程数//启动多线程if(num > length){num &#61; length;}int baseNum &#61; length / num;int remainderNum &#61; length % num;int end &#61; 0;for (int i &#61; 0; i < num; i&#43;&#43;) {int start &#61; end ;end &#61; start &#43; baseNum;if(i &#61;&#61; (num-1)){end &#61; length;}else if( i < remainderNum){end &#61; end &#43; 1;}HandleThread thread &#61; new HandleThread("线程[" &#43; (i &#43; 1) &#43; "] ", list, start , end,minioUtil,filmId);thread.start();}}/*** 任务处理类*/public static class HandleThread extends Thread {private String threadName;private List<String> list;private int startIndex;private int endIndex;private MinioUtil minioUtil;private String filmId;public HandleThread(String threadName, List<String> list, int startIndex, int endIndex,MinioUtil minioUtil,String filmId) {this.threadName &#61; threadName;this.list &#61; list;this.startIndex &#61; startIndex;this.endIndex &#61; endIndex;this.minioUtil &#61;minioUtil;this.filmId &#61;filmId;}public void run() {long startTime &#61; System.currentTimeMillis(); //获取开始时间List<String> subList &#61; list.subList(startIndex, endIndex);for (int i &#61; startIndex; i < endIndex; i&#43;&#43;) {try {minioUpload(list.get(i),minioUtil,filmId);} catch (Exception e) {e.printStackTrace();}}System.out.println(threadName&#43;"处理了"&#43;subList.size()&#43;"条&#xff01;startIndex:"&#43;startIndex&#43;"|endIndex:"&#43;endIndex);long endTime &#61; System.currentTimeMillis(); //获取结束时间System.out.println("程序运行时间&#xff1a;" &#43; (endTime - startTime) &#43; "ms"); //输出程序运行时间}}/*** 根据 一个文件开启 一个上传认为* &#64;param file 文件的路径* &#64;param minioUtil 初始化的 minoiuitl地址* &#64;param filmId 桶下的 文件夹名字* &#64;throws IOException* &#64;throws XmlPullParserException* &#64;throws NoSuchAlgorithmException* &#64;throws InvalidKeyException* &#64;throws InvalidArgumentException* &#64;throws ErrorResponseException* &#64;throws NoResponseException* &#64;throws InvalidBucketNameException* &#64;throws InsufficientDataException* &#64;throws InternalException*/public static void minioUpload(String file,MinioUtil minioUtil,String filmId) throws IOException, XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, InvalidArgumentException, ErrorResponseException, NoResponseException, InvalidBucketNameException, InsufficientDataException, InternalException {String spit &#61;"";if (file.contains("/")){spit &#61;"/";}else if (file.contains("\\")){spit &#61; "\\";}String nameSuffix &#61; file.substring(file.lastIndexOf(spit) &#43; 1);String name &#61; nameSuffix.substring(0, nameSuffix.lastIndexOf("."));String suffix &#61; nameSuffix.substring(nameSuffix.lastIndexOf(".") &#43; 1);System.out.println("开始上传&#43;" &#43; name);minioUtil.push("film", filmId &#43; "/" &#43; name, suffix, file);}}

推荐阅读
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 未定义的打字稿记录:探索其成因与解决方案 ... [详细]
  • 类加载机制是Java虚拟机运行时的重要组成部分。本文深入解析了类加载过程的第二阶段,详细阐述了从类被加载到虚拟机内存开始,直至其从内存中卸载的整个生命周期。这一过程中,类经历了加载(Loading)、验证(Verification)等多个关键步骤。通过具体的实例和代码示例,本文探讨了每个阶段的具体操作和潜在问题,帮助读者全面理解类加载机制的内部运作。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Vuforia 开发指南:第二章 环境配置与搭建
    本章节详细介绍了如何在Vuforia官网上完成账号注册及环境配置。首先,访问Vuforia官方网站并点击“Register”按钮,按照提示填写必要的个人信息。提交表单后,系统将验证信息并创建账户。接下来,用户需要下载并安装Vuforia开发工具,确保开发环境的顺利搭建。此外,还提供了详细的配置步骤和常见问题的解决方案,帮助开发者快速上手。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • Python SDK,即Python软件开发工具包,是为开发者提供的一系列工具和库,旨在简化使用Python进行应用程序开发的过程。它不仅包括了基本的编程接口,还涵盖了各种实用工具和示例代码,帮助开发者更高效地构建和测试软件。通过使用Python SDK,开发者可以轻松集成复杂的功能模块,提高开发效率和代码质量。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
author-avatar
多米音乐_35794462
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有