这是合并的部分,我们要让在上一篇文章中被分割的文件再合并起来,建立一个新的项目,相对于上一个项目,只是少了一个combox控件,因为我们要合并文件,所以不需要选择文件大小,设计图如下:
同样,引用system.IO,然后,给浏览按钮添加如下代码:
浏览
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Title = "请选择要合并的第一个文件";
System.Windows.Forms.DialogResult drTemp = openFileDialog1.ShowDialog();
if (drTemp == DialogResult.OK && openFileDialog1.FileName != "")
{
textBox1.Text = openFileDialog1.FileName;
}
string[] path = openFileDialog1.FileName.Split(@"\".ToCharArray());
string sTemp = "";
int i = 0;
for (i = 0; i < path.Length - 1; i++)
{
sTemp = sTemp + path[i] + @"\";
}
button1.Enabled = true;
sDirectoryName = sTemp;
//获得文件所在目录
}
再给button2添加如下代码:
合并
private void button2_Click(object sender, EventArgs e)
{
string[] arrFileNames = Directory.GetFiles(sDirectoryName);
//获取存放分割后小文件所在目录所在的所有小文件
int iSumFile = arrFileNames.Length;
progressBar1.Maximum = iSumFile;
FileStream AddStream = new FileStream(textBox2.Text, FileMode.OpenOrCreate);
//以合并后的文件名称和打开方式来创建、初始化FileStream文件流
BinaryWriter AddWriter = new BinaryWriter(AddStream);
//以FileStream文件流来初始化BinaryWriter书写器,此用以合并分割的文件
/*循环合并小文件,并生成合并文件 */
for (int i = 0; i < iSumFile; i++)
{
FileStream TempStream = new FileStream(arrFileNames[i], FileMode.Open);
//以小文件所对应的文件名称和打开模式来初始化FileStream文件流,起读取分割作用
BinaryReader TempReader = new BinaryReader(TempStream);
//用FileStream文件流来初始化BinaryReader文件阅读器,也起读取分割文件作用
AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
//读取分割文件中的数据,并生成合并后文件
TempReader.Close();
//关闭BinaryReader文件阅读器
TempStream.Close();
//关闭FileStream文件流
progressBar1.Value = i + 1;
//显示合并进程
}
AddWriter.Close();
//关闭BinaryWriter文件书写器
AddStream.Close();
//关闭FileStream文件流
MessageBox.Show("成功合并!");
progressBar1.Value = 0;
}
编译后运行,我们找到刚才的文件,选择第一个0001.rar,然后进行合并,即可。
然后,可以在输出文件的目录下,看到my.rar了。