首页 > 代码库 > C#分块拷贝大文件

C#分块拷贝大文件

  //定义源文件和目标文件,绝对路径   public static string source = @"E:\C#\C#编程语言详解.pdf";    //2014-6-10 Training            //拷贝大文件,分块拷贝            AddBigFile(source);    /// <summary>        /// 拷贝大文件        /// </summary>        /// <param name="source">原绝对路径</param>        private static void AddBigFile(string source)        {            int i = 0;            using (FileStream fsRead = new FileStream(source, FileMode.Open))            {                byte[] byts = new byte[1024 * 1024 * 10];                while (true)                {                    int r = fsRead.Read(byts, 0, byts.Length);                    if (r <= 0)                    {                        Console.WriteLine("----End----");                        break;                    }                    DataBaseController.AddFiles(source, i, byts);                    Console.WriteLine("FileName:" + source + "" + i + "" + "大小:" + byts.Length);                    i++;                }            }        }DataBaseController.AddFiles函数是拿到二进制数据,插入数据库操作: public static class DataBaseController    {       public static readonly string connstr = "Data Source=.;Initial Catalog=AddFile;Persist Security Info=True;User ID=sa;Password=sa";       public static string Tosource = @"E:\C#\Copy123C#编程语言详解.pdf";       public static void AddFiles(string FileName,int Code,byte[] Data)       {           string sql = @"insert into FileBlock(FileName, Code, Data) values(@FileName, @Code, @Data)";           DateTime time = DateTime.Now;           SqlParameter[] pars = {                                new SqlParameter("@FileName",FileName),                                new SqlParameter("@Code",Code),                                new SqlParameter("@Data",Data)                                                               };           int count = SqlHelper.ExecuteNonQuery(connstr, CommandType.Text, sql, pars);       }       public static void GetFilesByName(string FileName)       {           string sql = @"select * from FileBlock where FileName = @FileName";           DateTime time = DateTime.Now;           SqlParameter[] pars = {                                new SqlParameter("@FileName",FileName),                                                    };           List<FileBlock> list = new List<FileBlock>();           using (SqlDataReader reader = SqlHelper.ExecuteReader(connstr, CommandType.Text, sql, pars))           {               list = Application.Data2Objects<FileBlock>(reader);           }           //循环查出文件的多个块,拼接写在一个文件中           FileStream fs = new FileStream(Tosource,FileMode.Create);           foreach (var item in list)           {               fs.Write(item.Data,0,item.Data.Length);           }           //byte[] data = http://www.mamicode.com/new byte[fs.Length];>//fs.Read(data,0,fs.Length);           //fs.Seek(0,SeekOrigin.Begin);          // return data;       }    }   public class FileBlock   {       public int ID { get; set; }       public string  FileName { get; set; }       public int Code { get; set; }       public byte[] Data { get; set; }   }