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 文件分割工具类相关推荐

  1. java List分割工具类

    package com.cmbchina.face.common.util;import com.google.common.collect.Lists; import org.springframe ...

  2. Java 文件转换工具类(word,html,excel,pdf,md,jpeg,png互转)

    一.前言 目前支持: word 转 html doc 转 docx html 转 word html 转 pdf excel 转 pdf word 转 jpeg word 转 png markdown ...

  3. java url类下载_Java根据url下载图片或文件的工具类-Fun言

    package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...

  4. Java代码实现解压文件包和压缩文件的工具类

    最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...

  5. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  6. Java封装OkHttp3工具类

    点击关注公众号,Java干货及时送达  作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...

  7. 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper

    FileSortHelper的核心功能就是,对文件集合FileInfo排序. FileInfo有若干字段,根据字段定义了4种比较器Comparator. 调用示例:Collections.sort(L ...

  8. 基于POI的读写Excel文件的工具类

    依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...

  9. java downloadfile_FileDownload.java:文件下载工具类

    FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...

  10. java 文件分割器_Java分割器

    java 文件分割器 Java Spliterator is one of the four iterators – Enumeration, Iterator, ListIterator and S ...

最新文章

  1. linux下搭建ntp服务,Linux 下快速搭建ntp 时间同步服务器
  2. VB 删除带子文件夹和文件的文件夹
  3. SqlHelper和数据访问层
  4. 单片机 防破解 技术论述
  5. 宋红康 jvm 课程ppt(String部分)
  6. 概率论的学习和整理11:伯努利试验的3种分布:0-1分支,几何分布, 二项分布
  7. 非科班基础知识三座大山:网络,操作系统,数据库
  8. properties文件
  9. 浙大计算机城市学院联合培养,浙大城市学院 今日视点 城市学院2007届联合培养硕士研究生顺利毕业...
  10. 详细讲解go web框架之gin框架源码解析记录及思路流程和理解
  11. 思科交换机配置单播MAC地址过滤
  12. 中国国产操作系统有哪些
  13. 马云郭广昌演讲:过冬靠自己 熬过挑战的企业才有抗体
  14. GoodGuy -试图去揣摩一个好产品会如何进行消息推送管理平台的需求设计
  15. java overide_java中的@Override标签,小细节大作用
  16. Web开发课程作业 :大象基金网上交易系统
  17. 4.2数据探索(一) - 数据探索的方法
  18. tcpreplay(常用的测试流量 播放工具)
  19. Java基础(抽象类和接口)
  20. 20190220《前赤壁赋---苏轼》

热门文章

  1. ETS 题库 c java_最新ETS阅读真题56篇完整版(TPO+ETS在线试题+官方模拟题+OG)
  2. 瑞利-贝纳尔对流(Rayleigh–Bénard convection)
  3. Excel 高效办公合集 (1): Excel 一键求和
  4. 免费4s店汽车保养维修记录查询的方式
  5. 硬盘性能测试DD命令详解
  6. 解决Windows10家庭版系统无法安装Docker Desktop问题
  7. 巩固大一,大二知识 练习计划
  8. 优秀课程案例:使用Scratch绘制初中数学中心对称图形!
  9. 【Unity3D】自学之路2.0
  10. 乐动ld06激光雷达sdk改bug记录分享