将大文件分割成小文件 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DialogResult dr; dr = open.ShowDialog(); if (dr != DialogResult.OK) { MessageBox.Show("请选择一个文件。"); return; } fsource.Text = open.FileName; FileInfo fi = new FileInfo(fsource.Text); lbhint.Text = "文件名:" + fi.Name + "/n文件大小:" + fi.Length.ToString() +" 字节"+ "/n创建日期:" + fi.CreationTime.ToString() + "/n修改日期:" + fi.LastWriteTime.ToString() + "/n属性:" + fi.Attributes.ToString(); } private void button2_Click(object sender, EventArgs e) { FolderBrowserDialog fbd = new FolderBrowserDialog(); DialogResult dr = fbd.ShowDialog(); if (dr != DialogResult.OK) { MessageBox.Show("请选择文件保存位置。"); return; } fdest.Text = fbd.SelectedPath.ToString() + "//"; } private void button3_Click(object sender, EventArgs e) { int bufflen = Convert.ToInt32(fsize.Text); byte[] buff = new byte[bufflen]; FileInfo finfo=new FileInfo(fsource.Text); FileStream sfs = new FileStream(fsource.Text, FileMode.Open);//打开文件 sfs.Position = 0; int times = Convert.ToInt32(finfo.Length) / bufflen;//取整 int m = Convert.ToInt32(finfo.Length) % bufflen;//取余 if (m > 0) ++times; if (times <= 1) { //文件小于bufflen sfs.Read(buff, 0, buff.Length); FileStream dfs = new FileStream((fdest.Text + finfo.Name.Substring(0, finfo.Name.Length - 4) + "_b"+ finfo.Extension), FileMode.Create); dfs.Write(buff, 0, Convert.ToInt32(sfs.Length)); dfs.Close(); MessageBox.Show("分割完成。"); return; } for (int i = 0; i < times; i++) { //文件大于bufflen sfs.Position = i * buff.Length; sfs.Read(buff, 0, buff.Length); FileStream dfs = new FileStream((fdest.Text + finfo.Name.Substring(0, finfo.Name.Length - 4) + "_" + i.ToString() + finfo.Extension), FileMode.Create); if (sfs.Length >= (i+1) * buff.Length) { dfs.Write(buff, 0, buff.Length); } else { long lastlen = sfs.Length - i*buff.Length; dfs.Write(buff, 0, Convert.ToInt32(lastlen)); } dfs.Close(); } sfs.Close(); MessageBox.Show("分割完成。"); } } } 太大的文件效率不高。