图01:项目之对话框
7. 把Visual Studio .Net的当前窗口切换到窗口,并从中的选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:
一个OpenFileDialog组件,用于选择要分割的大文件。
一个ProgressBar组件,用以显示文件分割的进度。
一个ComboBox组件,用以选择文件分割的大小。
二个TextBox组件,分别用以显示OpenFileDialog组件选择后的文件和输入分割后小文件存放的目录。
四个Label组件。
二个Button组件,分别用以选择要分割的大文件和对选定文件进行分割,并在这二个Button组件拖入Form1的设计窗体后,双击它们,则系统会在Form1.cs文件分别产生这二个组件的Click事件对应的处理代码。
8. 把Visual Studio .Net的当前窗口切换到窗口,并按照表05所示数值来调整组件的主要属性:
组件类型 组件名称 属性 设置结果Button button1 FlatStyle Flatbutton1 Text 执行button2 FlatStylePopupbutton2 Text...Form Form1 Text 文件分割Form1MaximizeBox FalseForm1MinimizeBox TrueForm1 FormBorderStyle FormBorderStyle.FixedSingleComboBox comboBox1 Items 720comboBox1 Items 1440comboBox1 Items 2880Label label1 Text 请选择大小:label2 Text 请选择文件:label3 Text 输入存放目录:label4 Text (单位:K)TextBox TextBox1 Text TextBox2 Text
表05:项目中组件主要属性设定数值表
至此项目的界面设计和功能实现的准备工作就完成了,设计后的界面如图02所示:
图02:项目的设计后的界面
9. 在窗口中,双击Form1.cs文件,进入Form1.cs文件的编辑界面。并在Form1.cs文件的开头,用下列导入命名空间代码替代系统缺省的导入命名空间代码。
using System ;using System.Drawing ;using System.Collections ;using System.ComponentModel ;using System.Windows.Forms ;using System.Data ;using System.IO ;using System.Text ;using System.Data.OleDb ;using System.Windows.Forms.Design ;
10. 用下列代码替换Form1.cs中的button2的Click事件对应的处理代码,下列代码功能是选定要分割的大文件:
private void button2_Click ( object sender , System.EventArgs e ){ openFileDialog1.Title = "请选择要分割的文件名称" ; DialogResult drTemp = openFileDialog1.ShowDialog ( ) ; if ( drTemp == DialogResult.OK && openFileDialog1.FileName != string.Empty ) { textBox1.Text = openFileDialog1.FileName ; button1.Enabled = true ; }}
11. 用下列代码替换Form1.cs中的button1的Click事件对应的处理代码,下列代码功能是按照选择的文件大小,把选定的文件按照此大小进行分割,并把分割后的文件存放到指定目录中:
private void button1_Click ( object sender , System.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 ;}
12. 至此在上述步骤都正确完成后,项目的全部工作就基本完成了。此时单击快捷键F5运行程序,单击按钮选择要分割的文件,输入分割文件存放的目录,并确定分割文件的大小后,单击按钮,则程序就能够把选定的文件按照选定的大小进行分割,并把分割成的文件存放输入的目录中。图03是项目的运行界面:
图03:项目的运行界面
Visual C#实现分割文件程序已经全部完成了,下面就来介绍Visual C#把用分割程序分割成的小文件进行合并的解决思路和具体的实现步骤。
四.Visual C#实现合并文件的解决方法及其具体实现步骤:
Visual C#实现合并文件的思路是首先获得要合并文件所在的目录,然后确定所在目录的文件数目,最后通过循环按此目录文件名称的顺序读取文件,形成数据流,并使用BinaryWriter在不断追加,循环结束即合并文件完成。具体的实现方法请参考下面步骤中的第步。以下就是Visual C#实现合并文件的具体实现步骤:
1. 启动Visual Studio .Net。
2. 选择菜单||后,弹出对话框。
3. 将设置为。
4. 将设置为。
5. 在文本框中输入。
6. 在的文本框中输入,然后单击按钮,这样在"E:VS.NET项目"目录中就产生了名称为"合并程序"的文件夹,并在里面创建了名称为"合并程序"的项目文件。具体如图04所示:
图04:项目之对话框
7. 把Visual Studio .Net的当前窗口切换到窗口,并从中的选项卡中往Form1窗体中拖入下列组件,并执行相应的操作: