套用了一个copyDir类
public static void CopyDir(string srcDir, string desDir)
        {
            if (!Directory.Exists(desDir))
            {
                Directory.CreateDirectory(desDir);
            }
            DirectoryInfo rootDi = new DirectoryInfo(srcDir);            //遍历文件
            FileInfo[] afi = rootDi.GetFiles();
            for (int i = 0; i < afi.Length; i++)
            {
                FileInfo fi = afi[i];
                fi.CopyTo(desDir + "\\" + fi.Name, true);
            }            //遍历子目录,递归调用以copy子目录
            DirectoryInfo[] adi = rootDi.GetDirectories();
            for (int i = 0; i < adi.Length; i++)
            {
                DirectoryInfo di = adi[i];
                CopyDir(di.FullName, desDir + "\\" + di.Name);
            }
        }
但不知如何能显示拷贝文件所需要的总计时间和剩余时间?
哪位高人指路,谢谢!

解决方案 »

  1.   

    用AJAX的,最新技术,这个现在没有源码哟
      

  2.   

    to 但不知如何能显示拷贝文件所需要的总计时间和剩余时间?即使windows中做这种操作,时间也是估算的
      

  3.   

    to 时间如何估算写一定数据的文件(例如10K),然后看其用时,从而推算出整个目录复制所需时间。
      

  4.   

    如果不是网络上的,本机下载的可以用api实现。
      

  5.   

    比如你的文件夹下一共有2000K的文件,其中第一个文件大小是10K
    你在拷贝第一个文件时计算一下时间,比如拷第一个文件用了1s,那么就说明拷贝速度是10K/s,从而可以估算出拷贝2000K的文件需要200s。
    重复上述过程,随着拷贝的进行,这个估算的结果可能会不断得出现变化
      

  6.   

    楼上的假设感觉不尽完善,如果单独只有1个文件为1G,OK,估算的时间似乎要等到完成拷贝后你才行知道。
    不知道拷贝过程中的时间估算是如何得来的呢?
      

  7.   

    "如果不是网络上的,本机下载的可以用api实现。"
    这个API是....?
      

  8.   

    Copy方法需要自己写,从两个FileStream中按照固定字节读和写,每一次读完就更新一下进度。
      

  9.   

    看看flashget就知道了,先取出文件的总大小,然后5秒后看看下载了多少然后用总大小处以5秒的时间,比如得到3,就显示还剩10秒,然后再等5秒看看下载了多少然后除,比如中间变慢了,得到了10,就显示还剩45秒才可以,看他的时间变化也都是3-5秒更新一次的样子,win的拷贝也是这样.