怎么在C#中利用FileStream实现大文件复制-创新互联

今天就跟大家聊聊有关怎么在C#中利用FileStream实现大文件复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联专注于中大型企业的成都网站建设、成都网站制作和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户超过千家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站设计和互联网程序开发,在前进的路上,与客户一起成长!
public static class FileHelper
 {
  /// 
  /// 复制大文件
  /// 
  /// 源文件的路径
  /// 文件保存的路径
  /// 每次读取的长度
  /// 是否复制成功
  public static bool CopyFile(string fromPath, string toPath, int eachReadLength)
  {
   //将源文件 读取成文件流
   FileStream fromFile = new FileStream(fromPath, FileMode.Open, FileAccess.Read);
   //已追加的方式 写入文件流
   FileStream toFile = new FileStream(toPath, FileMode.Append, FileAccess.Write);
   //实际读取的文件长度
   int toCopyLength = 0;
   //如果每次读取的长度小于 源文件的长度 分段读取
   if (eachReadLength < fromFile.Length)
   {
    byte[] buffer = new byte[eachReadLength];
    long copied = 0;
    while (copied <= fromFile.Length - eachReadLength)
    {
     toCopyLength = fromFile.Read(buffer, 0, eachReadLength);
     fromFile.Flush();
     toFile.Write(buffer, 0, eachReadLength);
     toFile.Flush();
     //流的当前位置
    toFile.Position = fromFile.Position;
     copied += toCopyLength;
     
    }
    int left = (int)(fromFile.Length - copied);
    toCopyLength = fromFile.Read(buffer, 0, left);
    fromFile.Flush();
    toFile.Write(buffer, 0, left);
    toFile.Flush();
 
   }
   else
   {
    //如果每次拷贝的文件长度大于源文件的长度 则将实际文件长度直接拷贝
    byte[] buffer = new byte[fromFile.Length];
    fromFile.Read(buffer, 0, buffer.Length);
    fromFile.Flush();
    toFile.Write(buffer, 0, buffer.Length);
    toFile.Flush();
 
   }
   fromFile.Close();
   toFile.Close();
   return true;
  }
 }

测试代码:

class Program
 {
  static void Main(string[] args)
  {
 
   Stopwatch watch = new Stopwatch();
   watch.Start();
   if (FileHelper.CopyFile(@"D:\安装文件\新建文件夹\SQLSVRENT_2008R2_CHS.iso", @"F:\SQLSVRENT_2008R2_CHS.iso", 1024 * 1024 * 5))
   {
    watch.Stop();
    Console.WriteLine("拷贝完成,耗时:" + watch.Elapsed.Seconds+"秒");
 
   }
   Console.Read();
  }
 
 }

结果:

怎么在C#中利用FileStream实现大文件复制

怎么在C#中利用FileStream实现大文件复制

看完上述内容,你们对怎么在C#中利用FileStream实现大文件复制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联成都网站设计公司行业资讯频道,感谢大家的支持。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:怎么在C#中利用FileStream实现大文件复制-创新互联
新闻来源:http://ybzwz.com/article/ihjgc.html