static void Main(string[] args) { string source = @"e:1.exe";//要移动文件的路径 大文件 string target = @"f:1.exe";//将文件移动到的目标路径 CopyFile(source, target); Console.ReadKey(); } private static void CopyFile(string source, string target) { //1.创建一个读取文件的流 using (FileStream fsRead = new FileStream(source, FileMode.Open)) { //2.创建一个写入文件的流 using (FileStream fsWrite = new FileStream(target, FileMode.Create)) { //3.创建一个读取文件、写入文件的缓冲区 byte[] buffer = new byte[1024 * 1024 * 10];//缓冲区大小为10M long fsLen = fsRead.Length;//获取源文件的总字节数 while (true)//4.开始读取、写入文件 { //返回值r表示本次实际读取到的字节数 fsRead.Position属性表示当前流的位置 int r = fsRead.Read(buffer, 0, buffer.Length); #region 文件加密操作 255-189 字节就会变,加入到的文件字节就变了 //for (int i = 0; i < buffer.Length; i++) //{ // buffer[i] = (byte)(Byte.MaxValue - buffer[i]); //} #endregion if (r <= 0)//表示读取到了文件的末尾 { break; } //如果r>0,则表示本次读取到了内容,将读取出来的buffer内容写入到fsWrite文件流中。 else { fsWrite.Write(buffer, 0, r);//注意长度是 r long lenAlready = fsWrite.Length; double proc = (double)lenAlready / fsLen; //double proc = (double)fsWrite.Position / len; Console.WriteLine("拷贝进度:{0}%", proc * 100); } } } }