這是一篇簡單介紹了使用c#來進行檔案的合并和分割,我在我的項目中,需要使用到這個模組的功能,所以自己實踐之後,發於此,以作備份:
首先,我們先來做檔案分割的部分,我們建立了個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,就可以了。
編譯運行如下:
然後看看你輸入的存放目錄下,會出現如下檔案,我的源檔案有16m所以有很多個小檔案。