运用Java编写代码将一个大文件切割成指定大小的小文件

思路:

对已知文件进行切割操作 –> 得到多个碎片文件

使用:

1、 1个字节输入流 –> 读取已知文件中的数据

2、 多个字节输出流 –> 生成多个碎片文件

思路补充:

创建一个指定大小的byte数组,将大文件读取到byte数组中,读满一次将byte数组写入一个新的小文件中,如此循环直到将大文件读取完毕

注意:此时最后一个小文件可能不足规定的内存大小,在从大文件读取最后一个byte数组时,可能还没读满byte数组,大文件就读取完毕了,所以只能将最后的未满足规定内存大小byte数组写入最后一个文件中;

具体代码如下:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

public class CutDemo {

public static void main(String[] args) {

//调用cutFile()函数 传人参数分别为 (原大文件,切割后存放的小文件的路径,切割规定的内存大小)

cutFile("D:\\java\\cut\\ForrestGump.avi", "D:\\java\\cuts",1024 * 1024 * 20);

}

private static void cutFile(String src, String endsrc, int num) {

FileInputStream fis = null;

File file = null;

try {

fis = new FileInputStream(src);

file = new File(src);

//创建规定大小的byte数组

byte[] b = new byte[num];

int len = 0;

//name为以后的小文件命名做准备

int name = 1;

//遍历将大文件读入byte数组中,当byte数组读满后写入对应的小文件中

while ((len = fis.read(b)) != -1) {

//分别找到原大文件的文件名和文件类型,为下面的小文件命名做准备

String name2 = file.getName();

int lastIndexOf = name2.lastIndexOf(".");

String substring = name2.substring(0, lastIndexOf);

String substring2 = name2.substring(lastIndexOf, name2.length());

FileOutputStream fos = new FileOutputStream(endsrc + "\\\\"+ substring + "-" + name + substring2);

//将byte数组写入对应的小文件中

fos.write(b, 0, len);

//结束资源

fos.close();

name++;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (fis != null) {

//结束资源

fis.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

对应路径截图

原大文件路径截图:

切割后的小文件执行代码前路径截图:

切割后的小文件执行代码后路径截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java切割文件_Java如何将大文件切割成小文件相关推荐

  1. cdr文件太大怎么转成小内存 CDR文件太大打不开怎么办

    使用cdr软件制作图形时,常常会将其制作成矢量图形.虽然矢量图形有着不失真.可任意放大等优点,但常会导致cdr文件过大.那么,cdr文件太大怎么转成小内存,CDR文件太大打不开怎么办?本文将会针对以上 ...

  2. 如何将大数组转成BIN文件

    嵌入式开发中,常需要把一些资源文件转成数组储存,由于嵌入式资源有限,数组太大也不行,如何将大数组转成BIN文件直接DOWNLOAD到FLASH中成了个大问题,本文将用C2B转换助手来解决这个问题,下列 ...

  3. hive与spark合并小文件,将大文件打碎成小文件

    场景一:将小文件合并成大文件. mro_hour_test表每个分区有几千个1m未压缩小文件, 以下语句是将几千个文件在输入时(map阶段)合并成150M一个的文件,插入到mro_hour_test_ ...

  4. java sql结果写入csv文件_java在处理大数据的时候一些小技巧

    众所周知,Java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法: 例如,我们要将 ...

  5. java读取大txt文件_JAVA读取很大的TXT文件(上百G)

    当文件过于大的时候我们如果还用传统的方式读取很容易造成内存满我们应该拆开读取: 用NIO方式把大文件分成固定大小的小文件(小于2G,自己综合分析设置多大,每个文件太大容易浪费空间,太小浪费时间),然后 ...

  6. java 多进程写一个文件_java高并发多线程及多进程同时写入文件研究

    测试&思考: 环境:windows 七.linux centos 6.三.java8html java多线程同时写一个文件 java高并发环境下多线程同时写入一个文件时, 经过 FileLoc ...

  7. java读取同包文件_Java实现从jar包中读取指定文件的方法

    本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...

  8. java zip 创建目录_Java实现Zip压缩目录中的所有文件

    java中将一个文件夹下所有的文件压缩成一个文件,然import java.io.*; import java.util.zip.*; public class CompressD { // 缓冲 s ...

  9. java ftp 损坏_java ftp上传时断网,文件损坏

    展开全部 以二进制流上传,然后实现断点续传. /** * 上传文件到FTP服务器,支持断点续传 * @param local 本地文件名称,绝对路径e68a8432313133353236313431 ...

最新文章

  1. 全球Top1000计算机科学家h指数发布,数据院院长Philip S. Yu上榜(附完整名单)...
  2. 你的编程技能是否与时俱进? TIOBE 4 月榜单出炉
  3. 通过简单的Linux命令,编译一个C语言代码
  4. POJ - 3417 Network(树上差分)
  5. CMD、AMD、commonJs 规范的写法
  6. javaone_JavaOne 2015 –又一年,又向前迈进了一步
  7. 终于我还是没忍住,用Python爬了一波女神
  8. Windows下mysql的基础操作
  9. html5 天地图,天地图API
  10. 适合程序员的简历模板
  11. 勾股定理计算机语言,勾股定理公式计算器
  12. 【夯实Dubbo】Dubbo的核心特性
  13. android 录屏方案 VFR和CFR
  14. 计算机教 学计划,教师计算机学习计划(共3篇)
  15. OpenCV学习+常用函数记录①:图像的基本处理
  16. Solidity学习记录——第四章
  17. Unity实战问题--导入视频格式问题(QuickTime player) 转
  18. java相关的文献摘要,java课程设计摘要 java课程设计的参考文献
  19. 三年硕士五年博,霜染青丝纹上额
  20. java前端nui_spring mvc 及普元nui前端框架学习笔记

热门文章

  1. 密码篇——非对称加密
  2. (33)调试驱动程序
  3. 编译器扩展SEH(2)
  4. 15、如何选择MySQL存储引擎
  5. 第二章 Matlab变量
  6. C语言选择排序(解析)
  7. python dataframe创建_python 创建一个空dataframe 然后添加行数据的实例
  8. mysql索引失效_导致MySQL索引失效的几种常见写法
  9. 【2019暑假刷题笔记-图的存储和图的遍历】绪论(代码模板-总结自《算法笔记》)
  10. 面试官问:为什么String的hashCode选择 31 作为乘子?