dos复制文件夹:C#文件夹复制的类来源: 发布时间:星期四, 2009年2月12日 浏览:163次 评论:0
单线程方式复制过程使用事件 using ; using .Collections.Generic; using .Text; using .IO; Zgke.Copy { /// <summary> /// 文件甲复制 /// [email protected] /// </summary> public CopyDirectory { /* 使用思路方法 private void button1_Click(object sender, EventArgs e) { Zgke.Copy.CopyDirectory _Info = Zgke.Copy.CopyDirectory(@"F:\项目文件\产品化\联络中心V1.4.0\Source", @"E:\Temp"); _Info.MyCopyRun Zgke.Copy.CopyDirectory.CopyRun(_Info_MyCopyRun); _Info.MyCopyEnd Zgke.Copy.CopyDirectory.CopyEnd(_Info_MyCopyEnd); _Info.StarCopy; } void _Info_MyCopyEnd { MessageBox.Show("复制完成"); } void _Info_MyCopyRun( FileCount, CopyCount, long FileSize, long CopySize, FileName) { this.Invoke((MethodInvoker)delegate { progressBar1.Maximum = FileCount; progressBar1.Value = CopyCount; label1.Text = CopySize. + "/" + FileSize.; label2.Text = FileName; }); } */ /// <summary> /// 源目录 /// </summary> private DirectoryInfo _Source; /// <summary> /// 目标目录 /// </summary> private DirectoryInfo _Target; /// <summary> /// 文件复制完成 /// </summary> /// <param name="FileCount">文件数量合计</param> /// <param name="CopyCount">复制完成数量</param> /// <param name="FileSize">文件大小合计</param> /// <param name="CopySize">复制完成大小</param> /// <param name="FileName">复制完成文件名</param> public delegate void CopyRun( FileCount, CopyCount,long FileSize,long CopySize, FileName); public event CopyRun MyCopyRun; /// <summary> /// 复制完成 /// </summary> public delegate void CopyEnd; public event CopyEnd MyCopyEnd; private _FileCount = 0; private _CopyCount = 0; private long _FileSize = 0; private long _CopySize = 0; /// <summary> /// 复制目录包含文件 /// </summary> /// <param name="p_SourceDirectory">源目录</param> /// <param name="p_TargetDirectory">目标目录</param> public CopyDirectory( p_SourceDirectory, p_TargetDirectory) { _Source = DirectoryInfo(p_SourceDirectory); _Target = DirectoryInfo(p_TargetDirectory); FileInfo Temp = _Source.GetFileInfos; } /// <summary> /// 开始复制 /// </summary> public void StarCopy { GetFile(_Source); .Threading.Thread Th = .Threading.Thread( .Threading.ThreadStart(Run)); Th.Start; } private void Run { Copy(_Source,_Target ); (MyCopyEnd != null) MyCopyEnd; } /// <summary> /// 复制目录到指定目录 /// </summary> /// <param name="source">源目录</param> /// <param name="target">目标目录</param> private void GetFile(DirectoryInfo MySiurceDirectory) { foreach (FileInfo _File in MySiurceDirectory.GetFiles) //循环文件 { _FileCount; _FileSize _File.Length; } foreach (DirectoryInfo _SourceSubDir in MySiurceDirectory.GetDirectories) //循环子目录 { GetFile(_SourceSubDir); } } /// <summary> /// 复制目录到指定目录 /// </summary> /// <param name="source">源目录</param> /// <param name="target">目标目录</param> private void Copy(DirectoryInfo p_Source, DirectoryInfo p_Target) { (!Directory.Exists(p_Target.FullName))Directory.CreateDirectory(p_Target.FullName); foreach (FileInfo _File in p_Source.GetFiles) //循环文件 { _File.CopyTo(Path.Combine(p_Target., _File.Name), true); _CopyCount; _CopySize _File.Length; (MyCopyRun != null) MyCopyRun(_FileCount, _CopyCount, _FileSize, _CopySize, _File.Name); } foreach (DirectoryInfo _SourceSubDir in p_Source.GetDirectories) //循环子目录 { DirectoryInfo _NextDir = p_Target.CreateSubdirectory(_SourceSubDir.Name); Copy(_SourceSubDir, _NextDir); } } } } 0
相关文章读者评论发表评论 |