A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ℃葫芦 中级黑马   /  2015-8-17 22:03  /  310 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.SequenceInputStream;
  6. import java.util.ArrayList;
  7. import java.util.Collections;
  8. import java.util.Enumeration;
  9. import java.util.Properties;

  10. public class MergeFile {

  11.         /**
  12.          * @param args
  13.          * @throws IOException
  14.          */
  15.         public static void main(String[] args) throws IOException {

  16.                 File dir = new File("c:\\partfiles");
  17.                
  18.                 mergeFile_2(dir);
  19.         }
  20.        
  21.         public static void mergeFile_2(File dir) throws IOException {
  22.                
  23.                 /*
  24.                  * 获取指定目录下的配置文件对象。
  25.                  */
  26.                 File[] files = dir.listFiles(new SuffixFilter(".properties"));
  27.                
  28.                 if(files.length!=1)
  29.                         throw new RuntimeException(dir+",该目录下没有properties扩展名的文件或者不唯一");
  30.                 //记录配置文件对象。
  31.                 File confile = files[0];
  32.                
  33.                
  34.                
  35.                 //获取该文件中的信息================================================。
  36.                
  37.                 Properties prop = new Properties();
  38.                 FileInputStream fis = new FileInputStream(confile);
  39.                
  40.                 prop.load(fis);
  41.                
  42.                 String filename = prop.getProperty("filename");               
  43.                 int count = Integer.parseInt(prop.getProperty("partcount"));
  44.                
  45.                
  46.                
  47.                
  48.                 //获取该目录下的所有碎片文件。 ==============================================
  49.                 File[] partFiles = dir.listFiles(new SuffixFilter(".part"));
  50.                
  51.                 if(partFiles.length!=(count-1)){
  52.                         throw new RuntimeException(" 碎片文件不符合要求,个数不对!应该"+count+"个");
  53.                 }
  54.                
  55.                
  56.                
  57.                 //将碎片文件和流对象关联 并存储到集合中。
  58.                 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
  59.                 for(int x=0; x<partFiles.length; x++){
  60.                        
  61.                         al.add(new FileInputStream(partFiles[x]));
  62.                 }
  63.                
  64.                
  65.                
  66.                 //将多个流合并成一个序列流。
  67.                 Enumeration<FileInputStream> en = Collections.enumeration(al);
  68.                 SequenceInputStream sis = new SequenceInputStream(en);
  69.                
  70.                 FileOutputStream fos = new FileOutputStream(new File(dir,filename));
  71.                
  72.                 byte[] buf = new byte[1024];
  73.                
  74.                 int len = 0;
  75.                 while((len=sis.read(buf))!=-1){
  76.                         fos.write(buf,0,len);
  77.                 }
  78.                
  79.                 fos.close();
  80.                 sis.close();
  81.                
  82.                
  83.                
  84.                
  85.                
  86.                
  87.         }

  88.         public static void mergeFile(File dir) throws IOException{
  89.                
  90.                
  91.                 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
  92.                
  93.                 for(int x=1; x<=3 ;x++){
  94.                         al.add(new FileInputStream(new File(dir,x+".part")));
  95.                 }
  96.                
  97.                 Enumeration<FileInputStream> en = Collections.enumeration(al);
  98.                 SequenceInputStream sis = new SequenceInputStream(en);
  99.                
  100.                 FileOutputStream fos = new FileOutputStream(new File(dir,"1.bmp"));
  101.                
  102.                 byte[] buf = new byte[1024];
  103.                
  104.                 int len = 0;
  105.                 while((len=sis.read(buf))!=-1){
  106.                         fos.write(buf,0,len);
  107.                 }
  108.                
  109.                 fos.close();
  110.                 sis.close();
  111.                
  112.         }

  113. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马