这样的效果?一个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;
}
然后给执行按钮添加如下代码:
privatevoidbutton2_Click(objectsender, EventArgs e)
{
intiFileSize=Int32.Parse(comboBox1.Text)*1024;
//根据选择来设定分割的小文件的大小
if(Directory.Exists(textBox2.Text))
Directory.Delete(textBox2.Text,true);
//如果计算机存在存放分割文件的目录,则全部删除此目录所有文件
else
Directory.CreateDirectory(textBox2.Text);
//反之则在计算机创建目录
FileStream SplitFileStream=newFileStream ( textBox1.Text , FileMode.Open ) ;
//以文件的全路对应的字符串和文件打开模式来初始化FileStream文件流实例
BinaryReader SplitFileReader=newBinaryReader ( SplitFileStream ) ;
//以FileStream文件流来初始化BinaryReader文件阅读器
byte[ ] TempBytes ;
//每次分割读取的最大数据
intiFileCount=(int) ( SplitFileStream.Length/iFileSize ) ;
//小文件总数
progressBar1.Maximum=iFileCount ;
if( SplitFileStream.Length%iFileSize!=0) iFileCount++;
string[ ] TempExtra=textBox1.Text.Split ('.') ;
/*循环将大文件分割成多个小文件*/
for(inti=1; i<=iFileCount ; i++)
{
stringsTempFileName=textBox2.Text+@"\"+i.ToString ( ) .PadLeft (4,'0')+"."+TempExtra[ TempExtra.Length-1] ;//小文件名
//确定小文件的文件名称
FileStream TempStream=newFileStream ( sTempFileName , FileMode.OpenOrCreate ) ;
//根据文件名称和文件打开模式来初始化FileStream文件流实例
BinaryWriter TempWriter=newBinaryWriter ( 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;}
参考:
C#对文件进行大批量处理,可以用StreamWriter与StreamReader类进行文件存取操作,这是一对从 Stream 派生的类,用于字节的输入和输出。
结合Directory类的GetFiles 方法应用,可以程序自动的读出文件列表到到一个标准数组中去,以备进一步使用,选取文件的方法有多种,这种方法体现了C#的高效性
希望对你有点帮助