C# 通过二进制,将多个文件合并为一个。

  1. /// <summary>
  2. /// 合并文件
  3. /// </summary>
  4. /// <param name="strDirectory"></param>
  5. /// <param name="strMergeResultFile"></param>
  6. private void MergeFiles(string strInputDirectory, string strMergeResultFile)
  7. {
  8. string[] arrFileNames = Directory.GetFiles(strInputDirectory);
  9. int iSumFile = arrFileNames.Length;
  10. //progressBar1.Maximum = iSumFile;
  11. FileStream AddStream = new FileStream(strMergeResultFile + "_temp", FileMode.OpenOrCreate);
  12. BinaryWriter AddWriter = new BinaryWriter(AddStream);
  13.  
  14. long firstFileLength = 0;
  15. FileStream TempStream = null;
  16. BinaryReader TempReader = null;
  17. //文件长度列表
  18. string allFileLength = "";
  19. //文件长度和文件内容叠加
  20. {
  21. for (int i = 0; i < iSumFile; i++)
  22. {
  23. TempStream = new FileStream(arrFileNames[i], FileMode.Open);
  24. TempReader = new BinaryReader(TempStream);
  25. AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
  26. if (firstFileLength == 0)
  27. {
  28. firstFileLength = TempReader.BaseStream.Length;
  29. allFileLength = firstFileLength.ToString().PadLeft(20, '0');
  30. }
  31. //暂时只处理2个文件的情况,下面是多文件
  32. //allFileLength += "," + TempReader.BaseStream.Length.ToString().PadLeft(20, '0');
  33.  
  34. TempReader.Close();
  35. TempStream.Close();
  36. }
  37. allFileLength = allFileLength.Trim(',');
  38.  
  39. //释放资源
  40. AddWriter.Flush();
  41. AddWriter.Close();
  42. AddStream.Close();
  43. TempStream = null;
  44. TempReader = null;
  45. }
  46. //创建含有头信息的文件- 也达到了加密的效果
  47. {
  48. System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
  49. byte[] BytesMessage = UTF8.GetBytes(allFileLength);
  50. AddStream = new FileStream(strMergeResultFile + "_r", FileMode.OpenOrCreate);
  51. AddWriter = new BinaryWriter(AddStream);
  52. //文件头
  53. AddWriter.Write(BytesMessage);
  54.  
  55. //写入原来文件
  56. TempStream = new FileStream(strMergeResultFile, FileMode.Open);
  57. TempReader = new BinaryReader(TempStream);
  58. AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
  59. long cc = TempReader.BaseStream.Length;
  60.  
  61. TempReader.Close();
  62. AddWriter.Flush();
  63. AddWriter.Close();
  64. TempStream.Close();
  65. //释放
  66. TempReader = null;
  67. AddWriter = null;
  68. TempStream = null;
  69. }
  70. //删掉临时
  71. File.Delete(strMergeResultFile + "_temp");
  72. }

C# 通过二进制,将多个文件合并为一个。的更多相关文章

  1. 多个.txt文件合并到一个.txt文件中

    如果想要将多个.txt文件合并到一个.txt文件中,可以先将所有.txt文件放到一个文件夹中,然后使用.bat文件完成任务. 例如,在一个文件夹下有1.txt, 2.txt, 3.txt三个文件,想把 ...

  2. 将目录下面所有的 .cs 文件合并到一个 code.cs 文件中,写著作权复制代码时的必备良药

    将目录下面所有的 .cs 文件合并到一个 code.cs 文件中,写著作权复制代码时的必备良药 @echo off echo 将该目录下所有.cs文件的内容合并到一个 code.cs 文件中! pau ...

  3. 多个EXCEL文件合并成一个

    Python的numpy处理起来会比较方便,有空实现一下,这里是Excel内部代码的方式: 合并方法如下: 1.需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel.如图 ...

  4. 把当前文件夹的xlsx或xls文件合并到一个excel文件中的不同sheet中

    把当前文件夹的xlsx或xls文件合并到一个excel文件中的不同sheet中步骤如下: 把需要合并的文件放到同一个文件夹 在该文件夹中新建一个excel文件 打开新建的excel问价,把鼠标放到sh ...

  5. 将多个sass文件合并到一个文件中

    将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...

  6. Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格

    Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...

  7. 一条命令将windows下多个ts文件合并为一个ts文件

    首先在待合并的文件夹下创建concat.bat(名字随意啦),写入如下命令 copy /b "%~dp0"\*.ts "%~dp0"\new.ts 执行该命令后 ...

  8. 将STM32 iap hex文件与app hex文件合并为一个hex文件

    日前公司产品需要增加远程升级功能,boot loader程序写好后交予生产部门使用时他们反馈每个产品程序需要刷写两次(一个boot loader 一个app程序),生产进度变慢浪费时间,于是乎研究如何 ...

  9. 如何将两个PDF文件合并到一个页面中

    在目前职场办公中,很多使用的文件格式是PDF文件格式,由于工作的需要,经常需要将PDF文件合并在一起,但由于PDF文件不能直接编辑修改,不能OFFICE,WPS那样,通过复制粘贴将两者合并,那如何解决 ...

随机推荐

  1. ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度学习环境【学习笔记】【原创】

    平台信息:PC:ubuntu16.04.i5.七彩虹GTX1060显卡 作者:庄泽彬(欢迎转载,请注明作者) 说明:参考了网上的一堆的资料搭建了深度学习的开发环境,下班在宿舍折腾了好几个晚上才搞定,写 ...

  2. 在Github上搭建博客

    貌似还是这个链接最靠谱呀 http://my.oschina.net/nark/blog/116299   如何利用github建立个人博客:之一 在线编辑器http://markable.in/ed ...

  3. 【建项目】eclipse maven建立多模块工程

    在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...

  4. linux 查看数据库和表

    mysql -h localhost -u 用戶名 -p密碼                //連接數據庫use desk_show;                                 ...

  5. CF_863_F(Netflow)

    codeforces_863_F 题目大意:给出一个数组的大小(n<=50),以及每个位置填数的范围限制(若无限制,即为1-n),最后求填出数组的最小花费,定义总花费为数组中每个数出现次数的平方 ...

  6. python应用-随机漫步

    对python应用的一个巩固,以及熟悉matplotlib的用法 效果如下: # -*- coding: utf-8 -*- """ Created on Fri Sep ...

  7. Python的hasattr() getattr() setattr() 函数使用方法详解--转载

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...

  8. 最全android Demo

    1.BeautifulRefreshLayout-漂亮的美食下拉刷新 https://github.com/android-cjj/BeautifulRefreshLayout/tree/Beauti ...

  9. ipconfig会出现多个IP地址

    一.问题描述 今天调试程序的时候发现电脑有两个IP地址,一时间不知道该用哪个?如下图: 二.问题分析 第一个叫ppp适配器,是一个逻辑的虚拟设备,ppp的意思是Point-to-Point Proto ...

  10. K-Means & Sequential Leader Clustering

    2017-12-31 19:08:37 k-平均算法源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域.k-means的目的是:把样本划分到k个聚类中,使得每个点都属 ...