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#把用分割程序分割成的小文件進行合並的解決思路和具體的實現步驟。