Java如何将大文件切割成小文件

运用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();
   }
  }
 }
}

对应路径截图

原大文件路径截图:

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

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

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

(0)

相关推荐

  • java 实现切割文件和合并文件的功能

    java 实现切割文件和合并文件的功能 一.切割文件代码如下: 需求:将一个媒体文件切割成多个碎片(每个碎片的大小为1M),并添加配置说明文件 1.创建(指定)一个文件夹,用于保存切割出来的碎片           2.创建源文件对象,并传入一个输入流对象           3.创建一个缓冲区为1M           4.创建一个输入流对象并将源文件对象传入,创建一个输出流对象引用           5.每个缓冲区获取到碎片时,使用输出对应流对象写入到一个新的文件           6.

  • Java编程实现用hash方法切割文件

    Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值.简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. 如果有大型数据文件(如每行为url或者ip或者单词等的),以G为单位的,处理的时候需先切分.

  • java字符串切割实例学习(获取文件名)

    上传文件路径为:C:/Documents and Settings/collin/My Documents/111-lazyloading.gif,欲取出文件名:111-lazyloading.gif.可以 复制代码 代码如下: String temp[] = name.split("////");if (temp.length > 1) {name = temp[temp.length - 1];} regex为////,因为在java中//表示一个/,而regex中//也表示

  • java实现切割wav音频文件的方法详解【附外部jar包下载】

    本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import j

  • 如何用Java来进行文件切割和简单的内容过滤的实现

    一 由来 去年由于项目的需求,要将一个任意一个文件制作成一个xml文件,并且需要保持文件内容本身不产生变化,还要能够将这个xml重新还原为原文件.如果小型的文件还好处理,大型的xml,比如几个G的文件,基本上就OOM了,很难直接从节点中提取数据.所以我采用了流的方式.于是有了这个文件的裁剪工具. 二 使用场景 本工具可能的使用场景: 1.对任一文件的切割/裁剪.通过字节流的方式,开始节点和终止节点,裁剪出两个节点之间的部分. 2.往任一文件的头/尾拼接指定字符串.可以很容易将一个文件嵌入在某一个

  • Java实现文件切割拼接的实现代码

    单线程实现 文件分割 在老的FAT32文件系统中,最大的单个文件大小必须保存在4G内,对于经常看电影的我这个是不能允许的.不过现在Windows有NTFS文件系统,Linux大部分发行版为Ext4文件系统,最大单个文件大小能大于4G.不过这二者并不能兼容..格式化NTFS的U盘Linux不能识别,格式化Ext4的U盘Windows不能识别,只能用老的FAT32兼容二者.所以将文件分割,再进行拼接就很重要,文件经过分割了在网络上传输就十分方便,也能开多线程对每部分进行HASH提高处理效率. 最近看

  • Java实现大文件的切割与合并操作示例

    本文实例讲述了Java实现大文件的切割与合并操作.分享给大家供大家参考,具体如下: 这里实现对大文件的切割与合并. 按指定个数切(如把一个文件切成10份)或按指定大小切(如每份最大不超过10M),这两种方式都可以. 在这里我只是给大家写下我自己的一点简单的代码: package io2; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io

  • Java如何将大文件切割成小文件

    运用Java编写代码将一个大文件切割成指定大小的小文件 思路: 对已知文件进行切割操作 –> 得到多个碎片文件 使用: 1. 1个字节输入流 –> 读取已知文件中的数据 2. 多个字节输出流 –> 生成多个碎片文件 思路补充: 创建一个指定大小的byte数组,将大文件读取到byte数组中,读满一次将byte数组写入一个新的小文件中,如此循环直到将大文件读取完毕 注意:此时最后一个小文件可能不足规定的内存大小,在从大文件读取最后一个byte数组时,可能还没读满byte数组,大文件就读取完毕

  • Java 堆排序实例(大顶堆、小顶堆)

    堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法.堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点. 堆排序的平均时间复杂度为Ο(nlogn) . 算法步骤: 1. 创建一个堆H[0..n-1] 2. 把堆首(最大值)和堆尾互换 3. 把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置 4. 重复步骤2,直到堆的尺寸为1 堆: 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:

  • Java实现将txt文件转成xls文件的方法

    最近项目用到txt文件和xls文件的转换,这里记录一下具体的思路. 下面利用java代码实现txt转xls,这里要使用到jxl.jar包,这个包是通过java来操作Excel表格的工具类库. 该jar包支持字体.数字.日期操作,能够修饰单元格属性,还能够支持图像和图表,基本上已经满足我们的日常操作,最主要的是这套API是纯Java实现的,在Windows和Linux操作系统下,它都可以正确的处理Excel文件. 具体实现代码如下: package test; import java.io.Buf

  • 微信小程序 less文件编译成wxss文件实现办法

    less文件编译成微信小程序wxss文件 2016年9月21日,微信小程序正式开启内测.在微信生态下,触手可及.用完即走的微信小程序引起广泛关注,刷爆朋友圈子.在这样的火爆氛围中,作为一个前端开发者的我,也悄悄地去尝鲜. 在做demo小示例的过程中,我发现了一个极为让人为难的事儿:**如何让 less/sass 文件转成小程序的 wxss 文件**.</font> 对于基本不使用原生css,而习惯编写less的我,这个事儿让我的样式编写相当的吃力. 在尝试配置koala (一个可以编译less

  • Java实现把文件压缩成zip文件的示例代码

    实现代码 ackage org.fh.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 说明:java压缩成zip * 作者:FH Admin * from:fhadmin.cn */ public class Fi

  • python 自动化将markdown文件转成html文件的方法

    一.背景 我们项目开发人员写的文档都是markdown文件.对于其它组的同学要进行阅读不是很方便.每次编辑完markdown文件,我都是用软件将md文件转成html文件.刚开始转的时候,还没啥,转得次数多了,就觉得不能继续这样下去了.作为一名开发人员,还是让机器去做这些琐碎的事情吧.故写了两个脚本将md文件转成html文件,并将其放置在web服务器下,方便其他人员阅读. 主要有两个脚本和一个定时任务: •一个python脚本,主要将md文件转成html文件: •一个shell脚本,主要用于管理逻

  • 利用python将xml文件解析成html文件的实现方法

    功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0 1.首先是我设计的简单的一个xml文件,也就是用来解析的源文件 下面是这个文件website.xml内容: <website> <page name="index" title="fuckyou"> <h1>welcome to</h1> <p>this is a moment</p> &

  • linux中把.c的文件编译成.so文件

    linux中共享库以so为后缀(shared object),与Windows下的DLL类似,是在程序运行时动态连接.多个进程可以连接同一个共享库. 以下以编译mylib.c为例讲如何编译.so文件. 首先,编译mylib.c: $gcc -c -fPIC -o mylib.o mylib.c -c表示只编译(compile),而不连接.-o选项用于说明输出(output)文件名.gcc将生成一个目标(object)文件mylib.o. 注意-fPIC选项.PIC指Position Indepe

  • 用asp实现把文件打包成Xml文件包,带解包的ASP工具附下载

    把文件打包成Xml文件包,带解包的ASP工具! 把网站源码全部打包到Xml文件里面,生成 updata.xml 文件,把xml文件上传到空间里面 然后通过 install.asp文件将文件全部释放出来. 就和z-blog的 自动安装包一样的功能呵呵. 代码是落伍的一位兄弟写的,不过代码好像有错误,这个是我参考他的 修改过了,可以正常运行!~~ 此代码可以应用到 asp程序的 自动升级服务上面.具体怎么来实现,欢迎探讨!~~ 就在下面回帖探讨!~~~ 不用设定打包目录版,需要设定打包目录版 这两个

  • C#实现将javascript文件编译成dll文件的方法

    本文实例讲述了C#实现将javascript文件编译成dll文件的方法.分享给大家供大家参考,具体如下: 第一步:新建项目 添加js文件 写个测试Function (JScript.js) 单击JS文件属性.将 生成操作 改成嵌入的资源 第二步:在项目文件中添加一个类文件  该 类继承System.Web.UI.WebControl类 并重写控件预呈现的方法 代码如下: public class ClientScript:System.Web.UI.WebControls.WebControl

随机推荐