谈到现在的邮箱,大家都会想到一个G字,那个时候的我很想开发出一个像Windows资源管理器一样的客户端,用上这么一个免费的午餐,大概英雄所见略同吧,你们看现在很多利用邮箱做网络硬盘的客户端都出来了,但是当我们看到那么大的邮箱最大的上传大小不能超过10M的时候,相信很多人都是一声感叹吧!!
     俗话说:“上有政策,下有对策。”其实在任何地方都是通用的。也许朋友们已经想到可以把文件切分为N小块,传上去,用的时候再组合起来,good!!你们都是聪明人,我也搜索了一下这方面的软件,但我没找一款比较好的,不是只能切分指定格式的文件就是切分的速度太慢了。
      踏破铁鞋无觅处,得来全不费功夫,前一段时间我去书店走走,看了一篇有关二进制读取的文章,里面介绍了有关这方面的原理和片段代码,哈哈,不就是我想要的吗?现把它贴出来,希望朋友们能从中有所收获,其实下面这些代码完成的就是一个文件切分组合的功能,而且与文件的格式无关,速度很快,想拥有我吗?还等什么:)

切分组合文件_c#

using System;
 using System.Drawing;
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.Data;using System.IO;
namespace 切分组合文件
 {
     /** <summary>
     /// Form1 的摘要说明。
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {
         private System.Windows.Forms.GroupBox groupBox1;
         private System.Windows.Forms.GroupBox groupBox2;
         private System.Windows.Forms.Label label1;
         private System.Windows.Forms.Label label2;
         private System.Windows.Forms.Label label3;
         private System.Windows.Forms.Label label4;
         private System.Windows.Forms.Label label5;
         private System.Windows.Forms.Label label6;
         private System.Windows.Forms.Label label7;
         private System.Windows.Forms.TextBox textBox1;
         private System.Windows.Forms.TextBox textBox2;
         private System.Windows.Forms.TextBox textBox3;
         private System.Windows.Forms.TextBox textBox4;
         private System.Windows.Forms.TextBox textBox5;
         private System.Windows.Forms.TextBox textBox6;
         private System.Windows.Forms.TextBox textBox7;
         private System.Windows.Forms.Button button1;
         private System.Windows.Forms.Button button2;
         private System.Windows.Forms.Button button3;
         private System.Windows.Forms.Button button4;
         private System.Windows.Forms.OpenFileDialog openFileDialog1;
         /** <summary>
         /// 必需的设计器变量。
         /// </summary>
         private System.ComponentModel.Container components = null;        public Form1()
         {
             //
             // Windows 窗体设计器支持所必需的
             //
             InitializeComponent();            //
             // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
             //
         }        /** <summary>
         /// 清理所有正在使用的资源。
         /// </summary>
         protected override void Dispose( bool disposing )
         {
             if( disposing )
             {
                 if (components != null) 
                 {
                     components.Dispose();
                 }
             }
             base.Dispose( disposing );
         }        Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
         /** <summary>
         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
         /// 此方法的内容。
         /// </summary>
         private void InitializeComponent()
         {
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.button1 = new System.Windows.Forms.Button();
             this.textBox1 = new System.Windows.Forms.TextBox();
             this.label1 = new System.Windows.Forms.Label();
             this.label2 = new System.Windows.Forms.Label();
             this.label3 = new System.Windows.Forms.Label();
             this.label5 = new System.Windows.Forms.Label();
             this.textBox2 = new System.Windows.Forms.TextBox();
             this.textBox3 = new System.Windows.Forms.TextBox();
             this.textBox4 = new System.Windows.Forms.TextBox();
             this.button2 = new System.Windows.Forms.Button();
             this.groupBox2 = new System.Windows.Forms.GroupBox();
             this.label4 = new System.Windows.Forms.Label();
             this.label6 = new System.Windows.Forms.Label();
             this.label7 = new System.Windows.Forms.Label();
             this.textBox5 = new System.Windows.Forms.TextBox();
             this.textBox6 = new System.Windows.Forms.TextBox();
             this.textBox7 = new System.Windows.Forms.TextBox();
             this.button3 = new System.Windows.Forms.Button();
             this.button4 = new System.Windows.Forms.Button();
             this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
             this.groupBox1.SuspendLayout();
             this.groupBox2.SuspendLayout();
             this.SuspendLayout();
             // 
             // groupBox1
             // 
             this.groupBox1.Controls.Add(this.button1);
             this.groupBox1.Controls.Add(this.textBox1);
             this.groupBox1.Controls.Add(this.label1);
             this.groupBox1.Controls.Add(this.label2);
             this.groupBox1.Controls.Add(this.label3);
             this.groupBox1.Controls.Add(this.label5);
             this.groupBox1.Controls.Add(this.textBox2);
             this.groupBox1.Controls.Add(this.textBox3);
             this.groupBox1.Controls.Add(this.textBox4);
             this.groupBox1.Controls.Add(this.button2);
             this.groupBox1.Location = new System.Drawing.Point(16, 16);
              = "groupBox1";
             this.groupBox1.Size = new System.Drawing.Size(392, 152);
             this.groupBox1.TabIndex = 0;
             this.groupBox1.TabStop = false;
             this.groupBox1.Text = "切分文件";
             // 
             // button1
             // 
             this.button1.Location = new System.Drawing.Point(224, 104);
              = "button1";
             this.button1.Size = new System.Drawing.Size(72, 23);
             this.button1.TabIndex = 2;
             this.button1.Text = "浏览";
             this.button1.Click += new System.EventHandler(this.button1_Click);
             // 
             // textBox1
             // 
             this.textBox1.Location = new System.Drawing.Point(120, 24);
              = "textBox1";
             this.textBox1.Size = new System.Drawing.Size(256, 21);
             this.textBox1.TabIndex = 1;
             this.textBox1.Text = "";
             // 
             // label1
             // 
             this.label1.Location = new System.Drawing.Point(8, 24);
              = "label1";
             this.label1.Size = new System.Drawing.Size(104, 23);
             this.label1.TabIndex = 0;
             this.label1.Text = "被切分文件名:";
             this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // label2
             // 
             this.label2.Location = new System.Drawing.Point(8, 64);
              = "label2";
             this.label2.Size = new System.Drawing.Size(104, 23);
             this.label2.TabIndex = 0;
             this.label2.Text = "文件大小(Byte):";
             this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // label3
             // 
             this.label3.Location = new System.Drawing.Point(224, 64);
              = "label3";
             this.label3.Size = new System.Drawing.Size(48, 23);
             this.label3.TabIndex = 0;
             this.label3.Text = "块数:";
             this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // label5
             // 
             this.label5.Location = new System.Drawing.Point(8, 104);
              = "label5";
             this.label5.Size = new System.Drawing.Size(104, 23);
             this.label5.TabIndex = 0;
             this.label5.Text = "分块长度(Byte):";
             this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // textBox2
             // 
             this.textBox2.Location = new System.Drawing.Point(120, 64);
              = "textBox2";
             this.textBox2.TabIndex = 1;
             this.textBox2.Text = "";
             // 
             // textBox3
             // 
             this.textBox3.Enabled = false;
             this.textBox3.Location = new System.Drawing.Point(272, 64);
              = "textBox3";
             this.textBox3.Size = new System.Drawing.Size(104, 21);
             this.textBox3.TabIndex = 1;
             this.textBox3.Text = "";
             // 
             // textBox4
             // 
             this.textBox4.Location = new System.Drawing.Point(120, 104);
              = "textBox4";
             this.textBox4.TabIndex = 1;
             this.textBox4.Text = "5000000";
             // 
             // button2
             // 
             this.button2.Location = new System.Drawing.Point(304, 104);
              = "button2";
             this.button2.Size = new System.Drawing.Size(72, 23);
             this.button2.TabIndex = 2;
             this.button2.Text = "切分";
             this.button2.Click += new System.EventHandler(this.button2_Click);
             // 
             // groupBox2
             // 
             this.groupBox2.Controls.Add(this.label4);
             this.groupBox2.Controls.Add(this.label6);
             this.groupBox2.Controls.Add(this.label7);
             this.groupBox2.Controls.Add(this.textBox5);
             this.groupBox2.Controls.Add(this.textBox6);
             this.groupBox2.Controls.Add(this.textBox7);
             this.groupBox2.Controls.Add(this.button3);
             this.groupBox2.Controls.Add(this.button4);
             this.groupBox2.Location = new System.Drawing.Point(16, 176);
              = "groupBox2";
             this.groupBox2.Size = new System.Drawing.Size(392, 152);
             this.groupBox2.TabIndex = 1;
             this.groupBox2.TabStop = false;
             this.groupBox2.Text = "组合文件";
             // 
             // label4
             // 
             this.label4.Location = new System.Drawing.Point(8, 24);
              = "label4";
             this.label4.Size = new System.Drawing.Size(104, 23);
             this.label4.TabIndex = 0;
             this.label4.Text = "第一切分文件名:";
             this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // label6
             // 
             this.label6.Location = new System.Drawing.Point(8, 64);
              = "label6";
             this.label6.Size = new System.Drawing.Size(104, 23);
             this.label6.TabIndex = 0;
             this.label6.Text = "组合文件名:";
             this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // label7
             // 
             this.label7.Location = new System.Drawing.Point(8, 104);
              = "label7";
             this.label7.Size = new System.Drawing.Size(104, 23);
             this.label7.TabIndex = 0;
             this.label7.Text = "分块数目:";
             this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // textBox5
             // 
             this.textBox5.Location = new System.Drawing.Point(120, 24);
              = "textBox5";
             this.textBox5.Size = new System.Drawing.Size(256, 21);
             this.textBox5.TabIndex = 1;
             this.textBox5.Text = "";
             // 
             // textBox6
             // 
             this.textBox6.Location = new System.Drawing.Point(120, 64);
              = "textBox6";
             this.textBox6.Size = new System.Drawing.Size(256, 21);
             this.textBox6.TabIndex = 1;
             this.textBox6.Text = "";
             // 
             // textBox7
             // 
             this.textBox7.Location = new System.Drawing.Point(120, 104);
              = "textBox7";
             this.textBox7.TabIndex = 1;
             this.textBox7.Text = "";
             // 
             // button3
             // 
             this.button3.Location = new System.Drawing.Point(224, 104);
              = "button3";
             this.button3.Size = new System.Drawing.Size(72, 23);
             this.button3.TabIndex = 2;
             this.button3.Text = "浏览";
             this.button3.Click += new System.EventHandler(this.button3_Click);
             // 
             // button4
             // 
             this.button4.Location = new System.Drawing.Point(304, 104);
              = "button4";
             this.button4.Size = new System.Drawing.Size(72, 23);
             this.button4.TabIndex = 2;
             this.button4.Text = "组合";
             this.button4.Click += new System.EventHandler(this.button4_Click);
             // 
             // Form1
             // 
             this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
             this.ClientSize = new System.Drawing.Size(424, 342);
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
             this.MaximizeBox = false;
              = "Form1";
             this.Text = "切分组合文件";
             this.groupBox1.ResumeLayout(false);
             this.groupBox2.ResumeLayout(false);
             this.ResumeLayout(false);        }
         #endregion        /** <summary>
         /// 应用程序的主入口点。
         /// </summary>
         [STAThread]
         static void Main() 
         {
             Application.Run(new Form1());
         }        private void button1_Click(object sender, System.EventArgs e)
         {
             if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
                 return;
             try
             {
                 string FileName = this.openFileDialog1.FileName;
                 this.textBox1.Text = FileName;
                 FileInfo MyFileInfo = new FileInfo(FileName);
                 this.textBox2.Text = MyFileInfo.Length.ToString();
                 this.textBox3.Text = System.Math.Ceiling(Double.Parse(this.textBox2.Text)/Double.Parse(this.textBox4.Text)).ToString();
             }
             catch(Exception Err)
             {
                 MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
         }        private void button2_Click(object sender, System.EventArgs e)
         {
             try
             {
                 FileStream MyInFile = new FileStream(this.textBox1.Text,FileMode.OpenOrCreate,FileAccess.Read);
                 for(int i=0;i<Int32.Parse(this.textBox3.Text);i++)
                 {
                     FileStream MyOutFile = new FileStream(this.textBox1.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Write);
                     int data = 0;
                     int FileSize = Convert.ToInt32(this.textBox4.Text);
                     byte[] buffer = new byte[FileSize];
                     if((data=MyInFile.Read(buffer,0,FileSize))>0)
                     {
                         MyOutFile.Write(buffer,0,data);
                     }
                     MyOutFile.Close();
                 }
                 MyInFile.Close();
                 MessageBox.Show("切分文件操作成功!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
             catch(Exception Err)
             {
                 MessageBox.Show("切分文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
         }        private void button3_Click(object sender, System.EventArgs e)
         {
             if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
                 return;
             try
             {
                 string FileName = this.openFileDialog1.FileName;
                 this.textBox5.Text = FileName;
                 this.textBox6.Text = FileName.Substring(0,FileName.Length-5);
                 int i = 0;
                 while(System.IO.File.Exists(this.textBox6.Text+i+".xyz"))
                 {
                     i++;
                 }
                 this.textBox7.Text = i.ToString();
             }
             catch(Exception Err)
             {
                 MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
         }        private void button4_Click(object sender, System.EventArgs e)
         {
             try
             {
                 FileStream MyOutFile = new FileStream(this.textBox6.Text,FileMode.OpenOrCreate,FileAccess.Write);
                 for(int i=0;i<Int32.Parse(this.textBox7.Text);i++)
                 {
                     int data = 0;
                     byte[] buffer = new byte[1024];
                     FileStream MyInFile = new FileStream(this.textBox6.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Read);
                     while((data=MyInFile.Read(buffer,0,1024))>0)
                     {
                         MyOutFile.Write(buffer,0,data);
                     }
                     MyInFile.Close();
                 }
                 MyOutFile.Close();
                 MessageBox.Show("组合文件操作完成","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
             catch(Exception Err)
             {
                 MessageBox.Show("组合文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
             }
         }
     }
 }