91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在C#中利用FileStream實現大文件復制

發布時間:2021-05-31 17:57:47 來源:億速云 閱讀:275 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關怎么在C#中利用FileStream實現大文件復制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

public static class FileHelper
 {
  /// <summary>
  /// 復制大文件
  /// </summary>
  /// <param name="fromPath">源文件的路徑</param>
  /// <param name="toPath">文件保存的路徑</param>
  /// <param name="eachReadLength">每次讀取的長度</param>
  /// <returns>是否復制成功</returns>
  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實現大文件復制有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连城县| 祁东县| 武城县| 金山区| 社旗县| 永平县| 新巴尔虎左旗| 格尔木市| 古丈县| 禄劝| 遵义县| 新乡市| 巴林右旗| 九龙坡区| 林西县| 吉木乃县| 托里县| 建平县| 彭州市| 黄大仙区| 临邑县| 衡东县| 务川| 繁昌县| 禹州市| 基隆市| 海林市| 南昌县| 顺昌县| 苏州市| 定南县| 安福县| 沁源县| 千阳县| 浦城县| 海淀区| 垣曲县| 深圳市| 峨边| 三明市| 江口县|