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...)ProgressBar 即時顯示進度合併程式專案建立、介面設計與核心邏輯實作。