亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

吉木乃县| 邮箱| 成都市| 五台县| 集安市| 汽车| 灵山县| 兰考县| 天津市| 开阳县| 深水埗区| 文昌市| 屏东县| 诸暨市| 南充市| 文水县| 陈巴尔虎旗| 丹棱县| 镇雄县| 砚山县| 钦州市| 恩施市| 民乐县| 静海县| 专栏| 陆良县| 晋宁县| 阳信县| 绥滨县| 汾阳市| 秦安县| 青田县| 左贡县| 安仁县| 抚宁县| 中江县| 海安县| 莱芜市| 清水县| 车致| 苏尼特左旗|