JAVA 文件分割工具类
package com.zf.target;
import java.io.File;
import java.io.FileOutputStream;
import java.io.RandomAccessFile;/*** 分割文件工具类 * @author zhoufeng**/
public class RandomAccessFileTest {public static int splitCount = 3; //默认分割成三份/*** 分割文件 * @param filePath 文件路径* @param dirPath 分割后的文件 保存目录* @param count 分割成多少份文件* @throws Exception* 默认分割后文件名 为 "数字_文件名" */public void splitFile(String filePath , String dirPath , int count) throws Exception{File targetFile = new File(filePath);String targetFileName = targetFile.getName();long fileLen = targetFile.length(); //文件大小long everyLen = fileLen / count ; //分割后每个文件的大小 splitCount = fileLen % count == 0 ? count : count + 1 ; //分割数量File dir = new File(dirPath);if(!dir.isDirectory())dir.mkdirs(); //目录不存在 ,就创建目录for (int i = 0; i < splitCount ; i++) {long start = i * everyLen ;RandomAccessFile raf = new RandomAccessFile(targetFile, "rw");File childFile = new File(dir , (i + 1) +"_" + targetFileName);new Thread(new SplitFile(raf , start , childFile , everyLen)).start();}}/*** 分割文件的线程类 , 为每个子文件创建一个该线程来进行分割 ,提高效率* @author zhoufeng**/class SplitFile implements Runnable{RandomAccessFile raf = null;long start = 0;File childFile = null ;long everyLen = 0 ;public SplitFile(){}public SplitFile(RandomAccessFile raf, long start, File childFile,long everyLen) {this.raf = raf;this.start = start;this.childFile = childFile;this.everyLen = everyLen;}public void run() {try{FileOutputStream fos = new FileOutputStream(childFile);byte[] temp = new byte[1024];int len = -1;long totalLen = 0; //读到的总长度raf.seek(start); //设置开始位置if(everyLen < 1024){ //如果分割后文件大小 没有比1024都小 ,就直接读取文件大小的内容 避免多读temp = new byte[(int) everyLen];}while(totalLen < everyLen && ((len = raf.read(temp)) != -1)){fos.write(temp, 0, len);totalLen += len;if(everyLen - totalLen < 1024) //判断剩余内容还有没有1024大 ,如果没有 ,就直接读取剩下的长度 避免多读temp = new byte[(int) (everyLen - totalLen)];}}catch(Exception e){e.printStackTrace();}System.out.println("线程 " + Thread.currentThread().getName() + " 分割完成");}}public static void main(String[] args) throws Exception {new RandomAccessFileTest().splitFile("C:/Documents and Settings/zhoufeng/My Documents/Downloads/HotelInfo.xml.CS/ProductionApplications/Distribution/ContentStaticInfoGenerator/output/1.HotelInfo.xml", "d:/lllllll" ,5 );}}
JAVA 文件分割工具类相关推荐
- java List分割工具类
package com.cmbchina.face.common.util;import com.google.common.collect.Lists; import org.springframe ...
- Java 文件转换工具类(word,html,excel,pdf,md,jpeg,png互转)
一.前言 目前支持: word 转 html doc 转 docx html 转 word html 转 pdf excel 转 pdf word 转 jpeg word 转 png markdown ...
- java url类下载_Java根据url下载图片或文件的工具类-Fun言
package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...
- Java代码实现解压文件包和压缩文件的工具类
最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- Java封装OkHttp3工具类
点击关注公众号,Java干货及时送达 作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper
FileSortHelper的核心功能就是,对文件集合FileInfo排序. FileInfo有若干字段,根据字段定义了4种比较器Comparator. 调用示例:Collections.sort(L ...
- 基于POI的读写Excel文件的工具类
依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...
- java downloadfile_FileDownload.java:文件下载工具类
FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...
- java 文件分割器_Java分割器
java 文件分割器 Java Spliterator is one of the four iterators – Enumeration, Iterator, ListIterator and S ...
最新文章
- linux下搭建ntp服务,Linux 下快速搭建ntp 时间同步服务器
- VB 删除带子文件夹和文件的文件夹
- SqlHelper和数据访问层
- 单片机 防破解 技术论述
- 宋红康 jvm 课程ppt(String部分)
- 概率论的学习和整理11:伯努利试验的3种分布:0-1分支,几何分布, 二项分布
- 非科班基础知识三座大山:网络,操作系统,数据库
- properties文件
- 浙大计算机城市学院联合培养,浙大城市学院 今日视点 城市学院2007届联合培养硕士研究生顺利毕业...
- 详细讲解go web框架之gin框架源码解析记录及思路流程和理解
- 思科交换机配置单播MAC地址过滤
- 中国国产操作系统有哪些
- 马云郭广昌演讲:过冬靠自己 熬过挑战的企业才有抗体
- GoodGuy -试图去揣摩一个好产品会如何进行消息推送管理平台的需求设计
- java overide_java中的@Override标签,小细节大作用
- Web开发课程作业 :大象基金网上交易系统
- 4.2数据探索(一) - 数据探索的方法
- tcpreplay(常用的测试流量 播放工具)
- Java基础(抽象类和接口)
- 20190220《前赤壁赋---苏轼》
热门文章
- ETS 题库 c java_最新ETS阅读真题56篇完整版(TPO+ETS在线试题+官方模拟题+OG)
- 瑞利-贝纳尔对流(Rayleigh–Bénard convection)
- Excel 高效办公合集 (1): Excel 一键求和
- 免费4s店汽车保养维修记录查询的方式
- 硬盘性能测试DD命令详解
- 解决Windows10家庭版系统无法安装Docker Desktop问题
- 巩固大一,大二知识 练习计划
- 优秀课程案例:使用Scratch绘制初中数学中心对称图形!
- 【Unity3D】自学之路2.0
- 乐动ld06激光雷达sdk改bug记录分享