C#——文件分割与合并

来源:互联网 发布:淘宝装修日记哪里去了 编辑:程序博客网 时间:2024/06/11 11:20

首先,做文件分割的部分,新建了个winform项目,项目设计如下:

这里有如下控件:

一个OpenFileDialog组件,用于选择要分割的大文件。
一个ProgressBar组件,用以显示文件分割的进度。
一个ComboBox组件,用以选择文件分割的大小。
二个TextBox组件,分别用以显示OpenFileDialog组件选择后的文件和输入分割后小文件存放的目录。
四个Label组件。

然后,给...按钮添加如下代码,当然你还需要using System.IO;

浏览文件openFileDialog1.Title = "请选择要分割的文件名称";            DialogResult drTemp = openFileDialog1.ShowDialog();            if (drTemp == DialogResult.OK && openFileDialog1.FileName != string.Empty)            {                textBox1.Text = openFileDialog1.FileName;                button2.Enabled = true;            }

然后给执行按钮添加如下代码:

执行按钮private void button2_Click(object sender, EventArgs e)        {            int iFileSize = Int32.Parse(comboBox1.Text) * 1024;            //根据选择来设定分割的小文件的大小            if (Directory.Exists(textBox2.Text))                Directory.Delete(textBox2.Text, true);            //如果计算机存在存放分割文件的目录,则全部删除此目录所有文件            else                Directory.CreateDirectory(textBox2.Text);            //反之则在计算机创建目录            FileStream SplitFileStream=new FileStream ( textBox1.Text , FileMode.Open ) ;   //以文件的全路对应的字符串和文件打开模式来初始化FileStream文件流实例  BinaryReader SplitFileReader=new BinaryReader ( SplitFileStream ) ;   //以FileStream文件流来初始化BinaryReader文件阅读器  byte [ ] TempBytes ;   //每次分割读取的最大数据  int iFileCount = ( int ) ( SplitFileStream.Length / iFileSize ) ;   //小文件总数  progressBar1.Maximum = iFileCount ;  if ( SplitFileStream.Length % iFileSize != 0 ) iFileCount++ ;  string [ ] TempExtra = textBox1.Text.Split ( '.' ) ;  /* 循环将大文件分割成多个小文件 */  for ( int i = 1 ; i <= iFileCount ; i++ )   {   string sTempFileName = textBox2.Text + @"\"+i.ToString ( ) .PadLeft ( 4 ,'0' ) + "." + TempExtra[ TempExtra.Length - 1 ] ; //小文件名   //确定小文件的文件名称   FileStream TempStream = new FileStream ( sTempFileName , FileMode.OpenOrCreate ) ;   //根据文件名称和文件打开模式来初始化FileStream文件流实例   BinaryWriter TempWriter = new BinaryWriter ( TempStream ) ;    //以FileStream实例来创建、初始化BinaryWriter书写器实例    TempBytes = SplitFileReader.ReadBytes ( iFileSize ) ;    //从大文件中读取指定大小数据   TempWriter.Write ( TempBytes ) ;    //把此数据写入小文件   TempWriter.Close ( ) ;    //关闭书写器,形成小文件   TempStream.Close ( ) ;    //关闭文件流   progressBar1.Value = i - 1 ;   }  SplitFileReader.Close ( ) ;   //关闭大文件阅读器  SplitFileStream.Close ( ) ;   MessageBox.Show ( "分割成功!" ) ;  progressBar1.Value = 0 ;        }

 然后,设置combox的 item ,添加720、1440、2880三个item,就可以了。

原创粉丝点击