您的位置:首页 > 运维架构

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

2015-01-29 14:05 295 查看
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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: