码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-23 14:31:22      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:file   保存   write   nbsp   tac   director   sub   abs   包括   

 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     }

 

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

标签:file   保存   write   nbsp   tac   director   sub   abs   包括   

原文地址:http://www.cnblogs.com/jjlyx/p/7527808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!