02-大文件Copy(FileStream文件流类)

时间:2023-03-08 17:23:19
02-大文件Copy(FileStream文件流类)
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[ * * ];//缓冲区大小为10M
long fsLen = fsRead.Length;//获取源文件的总字节数
while (true)//4.开始读取、写入文件
{
//返回值r表示本次实际读取到的字节数 fsRead.Position属性表示当前流的位置
int r = fsRead.Read(buffer, , buffer.Length); #region 文件加密操作 255-189 字节就会变,加入到的文件字节就变了
//for (int i = 0; i < buffer.Length; i++)
//{
// buffer[i] = (byte)(Byte.MaxValue - buffer[i]);
//}
#endregion if (r <= )//表示读取到了文件的末尾
{
break;
}
//如果r>0,则表示本次读取到了内容,将读取出来的buffer内容写入到fsWrite文件流中。
else
{
fsWrite.Write(buffer, , r);//注意长度是 r
long lenAlready = fsWrite.Length;
double proc = (double)lenAlready / fsLen;
//double proc = (double)fsWrite.Position / len;
Console.WriteLine("拷贝进度:{0}%", proc * );
}
}
}
}