对大文件实现分割及合并处理

 1   public void cutFile(File bigFile,File destFile,int cutSize){
 2
 3         FileInputStream inputStream = null;
 4         int size = 1024*1024; //1M
 5         try {
 6             if (!destFile.isDirectory()){ //如果保存分割文件的地址不是路径
 7                 destFile.mkdir(); //创建路径
 8             }
 9             size = size * cutSize; //分割文件大小以M为单位
10             int length = (int) bigFile.length(); //获取大文件大小(B为单位)
11             int num = length / size; //计算分割成小文件的个数(每个小文件大小是M为单位)
12             int yu = length % size; //除余的文件大小(M)
13
14             String bigFilePath = bigFile.getAbsolutePath(); //获取大文件完整路径信息(包括文件名)
15             int fileNew = bigFilePath.lastIndexOf("."); //获取文件后缀前的“."的索引
16             String suffix = bigFilePath.substring(fileNew,bigFilePath.length()); //获取后缀,即文件类型
17
18             inputStream = new FileInputStream(bigFile); //获取大文件的文件输入流
19             File[] smallFile = new File[num+1]; //创建保存小文件的文件数组
20             int begin = 0;
21             for (int i =0;i< num;i++){
22                 smallFile[i] = new File(bigFile.getAbsolutePath()+"\\"+(i+1)+suffix+".tem"); //指定小文件的名字
23                 if (!smallFile[i].isFile()){
24                     smallFile[i].createNewFile(); //创建该文件
25                 }
26                 FileOutputStream outputStream = new FileOutputStream(smallFile[i]); //创建小文件的文件输出流
27                 byte[] small = new byte[size];
28                 inputStream.read(small); //读取小文件字节
29                 outputStream.write(small); //向小文件中写入字节数据
30                 begin = begin + size;
31                 outputStream.close();
32             }
33             if (yu != 0){ ///除余的文件大小(M)部不为空
34                 smallFile[num] = new File(bigFile.getAbsolutePath()+"\\"+(num+1)+suffix+".tem");
35                 if (!smallFile[num].isFile()){
36                     smallFile[num].createNewFile(); //创建文件
37                 }
38                 FileOutputStream outputStream = new FileOutputStream(smallFile[num]);
39                 byte[] bytes = new byte[yu];
40                 inputStream.read(bytes); //读取字节
41                 outputStream.write(bytes); //向文件写入数据
42                 outputStream.close();
43             }
44         }catch (Exception e){
45             e.printStackTrace();
46         }
47     }

2.合并处理

 1   public void closeFile(File[] files,File closeDir,String hz){
 2         try {
 3             File closeFile = new File(closeDir.getAbsoluteFile()+"\\close"+hz); //指定合并后的文件名(包含路径)
 4             if (!closeFile.isFile()){
 5                 closeFile.createNewFile(); //创建文件
 6             }
 7
 8             FileOutputStream outputStream = new FileOutputStream(closeFile); //创建文件输出流
 9             for (int i=0;i<files.length;i++){
10                 FileInputStream inputStream = new FileInputStream(closeFile); //创建文件输入流
11                 int len = (int) files[i].length(); //获取单个子文件大小
12                 byte[] bytes = new byte[len];
13                 inputStream.read(bytes);
14                 outputStream.write(bytes);
15                 inputStream.close();
16             }
17             outputStream.close();
18         }catch (Exception e){
19             e.printStackTrace();
20         }
21     }
时间: 2024-10-10 11:29:24

对大文件实现分割及合并处理的相关文章

Linux 大文件的分割与合并

1.分割 -- split命令 可以指定按行数分割和按字节大小分割两种模式. (1) 按行数分割 $ split -l 300 large_file.txt new_file_prefix 加上-d,使用数字后缀:加上--verbose,显示分割进度: $ split -l50000 -d large_file.txt part_ --verbose (2) 按字节大小分割 $ split -b 10m large_file.log new_file_prefix 2.合并 -- cat命令 $

java大文件的分割和合并

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Collections; i

Java-使用IO流对大文件进行分割和分割后的合并

有的时候我们想要操作的文件很大,比如:我们想要上传一个大文件,但是收到上传文件大小的限制,无法上传,这是我们可以将一个大的文件分割成若干个小文件进行操作,然后再把小文件还原成源文件.分割后的每个小文件的类型可以自己定义. 一下是我编写的一个大文件的分割和合并的代码: package com.lym; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; impor

C#文件的分割与合并

//--------------------文件,分割与合并---------------------------------------- using System.IO /// <summary> /// 单个文件分割函数, /// 可将任意文件fileIn分割为若干个子文件, 单个子文件最大为 len KB /// delet标识文件分割完成后是否删除原文件, change为加密密匙 /// fileIn = "D:\\file.rar", 子文件名形如"D

黑马程序员 IO流 文件的分割与合并

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------package cn.itcast.IO; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

java 流操作对文件的分割和合并的实例详解_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 java 流操作对文件的分割和合并的实例详解 学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并. 下面是代码: package com.dufy.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import jav

java实现文件的分割与合并

无非就是io流------------------------------------------------------- 实例类: 1.抽象类 import java.io.File; import java.io.IOException; public abstract class PartitionFile { /** * 单个文件设置的字节数 */ public static long MAX_BYTE = 1024*1024*1000; /** * 获取可以分割的文件数 * * @p

文件的分割与合并

/*文件的分割*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define NUM 1024 * 1024 * 100 int main() {         //所需分割的文件路径 FILE *fr = fopen("F:\\PL.exe", "rb"); if (fr == NULL) { exit(-1); } char *buff = (char*)

Python 视频文件的分割和合并

--分割代码 start---- import sys,os; kilobytes = 1024; megabytes = kilobytes*1024; chunksize = int(10*megabytes); def split(fromfile,todir,chunksize=chunksize): if not os.path.exists(todir): os.mkdir(todir) else: for fname in os.listdir(todir): os.remove(