c#檔案分割與合并 part 1 自互連網)

來源:互聯網
上載者:User

這是一篇簡單介紹了使用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所以有很多個小檔案。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.