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

 

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

 

        /// <summary>
        /// 合并文件
        /// </summary>
        /// <param name="strDirectory"></param>
        /// <param name="strMergeResultFile"></param>      
        private void MergeFiles(string strInputDirectory, string strMergeResultFile)
        {
            string[] arrFileNames = Directory.GetFiles(strInputDirectory);
            int iSumFile = arrFileNames.Length;
            //progressBar1.Maximum = iSumFile;
            FileStream AddStream = new FileStream(strMergeResultFile + "_temp", FileMode.OpenOrCreate);
            BinaryWriter AddWriter = new BinaryWriter(AddStream);

            long firstFileLength = 0;
            FileStream TempStream = null;
            BinaryReader TempReader = null;
            //文件长度列表
            string allFileLength = "";
            //文件长度和文件内容叠加
            {
                for (int i = 0; i < iSumFile; i++)
                {
                    TempStream = new FileStream(arrFileNames[i], FileMode.Open);
                    TempReader = new BinaryReader(TempStream);
                    AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
                    if (firstFileLength == 0)
                    {
                        firstFileLength = TempReader.BaseStream.Length;
                        allFileLength = firstFileLength.ToString().PadLeft(20, '0');
                    }
                    //暂时只处理2个文件的情况,下面是多文件
                    //allFileLength += "," + TempReader.BaseStream.Length.ToString().PadLeft(20, '0');

                    TempReader.Close();
                    TempStream.Close();
                }
                allFileLength = allFileLength.Trim(',');

                //释放资源
                AddWriter.Flush();
                AddWriter.Close();
                AddStream.Close();
                TempStream = null;
                TempReader = null;
            }
            //创建含有头信息的文件- 也达到了加密的效果
            {
                System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
                byte[] BytesMessage = UTF8.GetBytes(allFileLength);
                AddStream = new FileStream(strMergeResultFile + "_r", FileMode.OpenOrCreate);
                AddWriter = new BinaryWriter(AddStream);
                //文件头
                AddWriter.Write(BytesMessage);

                //写入原来文件
                TempStream = new FileStream(strMergeResultFile, FileMode.Open);
                TempReader = new BinaryReader(TempStream);
                AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
                long cc = TempReader.BaseStream.Length;

                TempReader.Close();
                AddWriter.Flush();
                AddWriter.Close();
                TempStream.Close();
                //释放
                TempReader = null;
                AddWriter = null;
                TempStream = null;
            }
            //删掉临时
            File.Delete(strMergeResultFile + "_temp");
        }

 

转载于:https://www.cnblogs.com/nidongde/p/6297609.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值