zoukankan      html  css  js  c++  java
  • 将一个文件分割为多个文件

    实现效果:

      

    知识运用:

      FileStream 

      BinaryReader类   //用特定的编码将基元数据类型读作二进制值   其构造函数主要使用UTF8Encoding初始化类实例 

      public BinaryReader(Stream input)

          BinaryReader类的ReadBytes方法   //从当前流中将count个字节读入字节数组  并使当前位提升count个字节

          public virtual byte[] ReadBytes(int count)

      BinaryWriter类    //用特定的编码将基元数据类型写入流   其构造函数主要使用UTF8Encoding初始化类实例

      public BinaryWriter(Stream output)

          BinaryWriter类的Write方法        //将值写入当前流

          public virtual void Write(byte[] buffer)

    实现代码:

            /// <summary>
            /// 分割文件
            /// </summary>
            /// <param name="strFlag">分割单位</param>
            /// <param name="intFlag">分割大小</param>
            /// <param name="strPath">分割后文件的存放路径</param>
            /// <param name="strFile">分割的文件</param>
            /// <param name="PBar">显示的进度条</param>
            public void SplitFile(string strFlag, int intFlag, string strPath, string strFile, ProgressBar PBar)
            {
                int iFileSize = 0;
                switch (strFlag)                                                 //根据选择来设定分割的小文件的大小
                {
                    case "Byte":
                        iFileSize = intFlag;
                        break;
                    case "KB":
                        iFileSize = intFlag * 1024;
                        break;
                    case "MB":
                        iFileSize = intFlag * 1024 * 1024;
                        break;
                    case "GB":
                        iFileSize = intFlag * 1024 * 1024 * 1024;
                        break;
                }
                FileStream fileStream = new FileStream(strFile,FileMode.Open);   //以文件全路径 和文件打开模式创建FileStream文件流对象
                BinaryReader binaryReader = new BinaryReader(fileStream);        //以FileStream文件流来创建BinaryReader文件阅读器
                byte[] tempByte;                                                 //每次分割读取的文件的最大数据
                int iFileCount = (int) (fileStream.Length / iFileSize);          //小文件总数
                if (fileStream.Length % iFileSize != 0) iFileCount++;
                PBar.Maximum = iFileCount;
                string[] tempExtra = strFile.Split('.');
                for (int i = 1; i <= iFileCount; i++)
                {
                    string iTempName = strPath + @"" + i.ToString().PadLeft(4, '0') + "." + tempExtra[tempExtra.Length- 1];
                    FileStream tempStream = new FileStream(iTempName,FileMode.OpenOrCreate);
                    BinaryWriter tempWriter = new BinaryWriter(tempStream);
                    tempByte = binaryReader.ReadBytes(iFileSize);                //从大文件中读取指定大小的数据
                    tempWriter.Write(tempByte);                                  //把此数据写入小文件
                    tempWriter.Close();                                          //关闭书写器  形成小文件
                    tempStream.Close();                                          //关闭流对象
                    PBar.Value = i;
                }
                binaryReader.Close();                                            //关闭大文件阅读器
                fileStream.Close();                                              //关闭数据流
                MessageBox.Show("文件分割成功!");
            }
    
    
  • 相关阅读:
    .net环境变量 的设置
    情人节我们依旧单身(制作属于自己的QQ拼音皮肤)(带全部ps素材)
    sqlServer 中 正则表达式的使用(regexReplace函数)及配置(转)
    winform开发日常问题小记
    Ext 界面开发工具 Ext Designer 破解补丁
    中关村海龙大厦买本上当经历给大家提个醒
    [原创]Ext Panel 收缩时显示收缩文本
    解决php json_encode 出现的中文转码、乱码问题
    js获取get方式提交的参数返回json格式数据
    解决php的$美元符号与Zen Coding冲突问题
  • 原文地址:https://www.cnblogs.com/feiyucha/p/10235038.html
Copyright © 2011-2022 走看看