当前位置: 代码迷 >> 综合 >> I/O(7)——基于Stream的大文件拷贝、使用Stream做文件加密
  详细解决方案

I/O(7)——基于Stream的大文件拷贝、使用Stream做文件加密

热度:99   发布时间:2023-10-01 19:31:30.0

一、基于Stream的大文件拷贝

1、代码:

using (FileStream outStream = new FileStream(@"c:\a.zip", FileMode.Create)){using (FileStream fs = new FileStream(@"c:\BorlandDelphi7.zip",FileMode.Open)){//byte[] bytes = new byte[1024];Read返回值表示实际读了多少内容//fs.Read(bytes, 0, bytes.Length);byte[] bytes = new byte[1024 * 1024 * 4];//缓冲区的大小。//缓冲区太小的话速度慢,伤硬盘//如果Read返回值大于0,说明还没有读完int readBytes;//实际读出的长度//练习:文件加密(每一位用255-r)//解释一下这句话// int j=(i=3);//bool b = (i=3)>0;while ((readBytes = fs.Read(bytes, 0, bytes.Length)) > 0){//list.AddRange(bytes);//因为最后一次可能没有把bytes读慢//所以把实际读取的数量做为第三个参数outStream.Write(bytes, 0, readBytes);//Thread.Sleep(1);}}Console.WriteLine(byte.MaxValue);Console.ReadKey();}

2、缓冲区的大小:缓冲区太小的话速度慢,伤硬盘。

 

3、用Stopwatch测试拷贝一个200MB的文件,

lengthEachTime=1024的时候28秒,

lengthEachTime=1024000的时候4秒。每次拷贝的字节数越多速度越快,太多了就又太占内存。因为每次拷贝、写都会导致磁头的启动、刹车,一次读写的越多启动、刹车次数一般越少File.Copy没法控制每次读写的字节数。

二、使用Stream做文件加密

4、byte.Max-b

  相关解决方案