首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 檔案分割合併工具(五):分割程式核心邏輯實作與執行驗證

     編輯:關於C語言

分割執行按鈕核心程式碼

private void button1_Click(object sender, EventArgs e)
{
    int chunkSize = int.Parse(comboBox1.Text) * 1024;  // KB → Bytes
    
    // 重建輸出目錄
    if (Directory.Exists(textBox2.Text))
        Directory.Delete(textBox2.Text, true);
    Directory.CreateDirectory(textBox2.Text);
    
    // 開啟來源檔案
    using (FileStream srcFs = new FileStream(textBox1.Text, FileMode.Open))
    using (BinaryReader reader = new BinaryReader(srcFs))
    {
        long totalChunks = srcFs.Length / chunkSize;
        if (srcFs.Length % chunkSize != 0) totalChunks++;
        
        progressBar1.Maximum = (int)totalChunks;
        
        // 解析副檔名
        string[] parts = textBox1.Text.Split('.');
        string ext = parts[parts.Length - 1];
        
        for (int i = 1; i <= totalChunks; i++)
        {
            // 分割檔名:0001.ext, 0002.ext...
            string chunkName = textBox2.Text + "\\" + i.ToString().PadLeft(4, '0') + "." + ext;
            
            using (FileStream dstFs = new FileStream(chunkName, FileMode.OpenOrCreate))
            using (BinaryWriter writer = new BinaryWriter(dstFs))
            {
                byte[] buffer = reader.ReadBytes(chunkSize);
                writer.Write(buffer);
            }
            progressBar1.Value = i;
        }
    }
    
    MessageBox.Show("分割成功!");
    progressBar1.Value = 0;
}

執行畫面

分割程式執行介面

關鍵實作細節

  • 檔名補零:PadLeft(4, '0') 確保檔名排序正確 (0001, 0002...)
  • 副檔名保留:自動提取原檔副檔名
  • 目錄重建:刪除舊目錄避免殘留檔案干擾
  • using 區塊:確保串流正確關閉釋放
  • 進度回報:ProgressBar 即時顯示進度

下篇預告

合併程式專案建立、介面設計與核心邏輯實作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved