这种东西网上很多
先Google一下吧

解决方案 »

  1.   

     //打开源文件
                        FileInfo fileToOpen = new FileInfo(sourceFileName);                    //保存到目标文件
                        FileInfo fileToSave = new FileInfo(destFileName);                    //读源文件
                        FileStream streamToRead = fileToOpen.Open(FileMode.Open, FileAccess.Read, FileShare.Read);                    //打开目标文件
                        FileStream streamToWrite = fileToSave.OpenWrite();
                        //设置正常一次读取的字节数
                        int bufferSize = 4096;                    //设置正常写文件时的字节数组
                        byte[] bufferNormal = new byte[bufferSize];
                        //总共写文件的次数
                        long readTimes = streamToRead.Length / bufferSize;                    //正常写文件N次后剩余的字节数目
                        int remainderSize = Convert.ToInt32(streamToRead.Length % bufferSize);                    //设置剩余写文件时的字节数组
                        byte[] bufferRemainder = new byte[remainderSize];
                        //循环写数据到目标文件中
                        for (long i = 0; i <= readTimes; i++)
                        {
                            //读源文件
                            streamToRead.Read(bufferNormal, 0, bufferSize);                        //写数据到目标文件
                            streamToWrite.Write(bufferNormal, 0, bufferSize);                        //s设置进度条的值
                            ProgressBar.Value = Convert.ToInt32(i * 100 / readTimes);
                            Application.DoEvents();                        //设置Lable上的进度值
                            lblProgress.Text = ProgressBar.Value.ToString() + "%";
                        }                    //剩余字节的读和写
                        if (remainderSize != 0)
                        {
                            streamToRead.Read(bufferRemainder, 0, remainderSize);
                            streamToWrite.Write(bufferRemainder, 0, remainderSize);
                        }                    //关闭文件的读写
                        streamToRead.Close();
                        streamToWrite.Close();
    这个是真的,绝对实时