C# FileStream複製大文件

這篇文章主要爲大家詳細介紹了C# FileStream複製大文件的相關代碼,具有一定的參考價值,感興趣的小夥伴們可以參考一下

本文實例爲大家分享了C# FileStream複製大文件的具體代碼,供大家參考,具體內容如下

即每次複製文件的一小段,以節省總內存開銷。當然,本機複製也可以採用.NET內部的System.IO.File.Copy方法。

/// <summary>

/// 複製文件

/// </summary>

/// <param name="fromFile">要複製的文件</param>

/// <param name="toFile">要保存的位置</param>

 /// <param name="lengthEachTime">每次複製的長度</param>

    private void CopyFile(string fromFile, string toFile, int lengthEachTime)

    {

      FileStream fileToCopy = new FileStream(fromFile, FileMode.Open, FileAccess.Read);

      FileStream copyToFile = new FileStream(toFile, FileMode.Append, FileAccess.Write);

      int lengthToCopy;

      if (lengthEachTime < fileToCopy.Length)//如果分段拷貝,即每次拷貝內容小於文件總長度

      {

        byte[] buffer = new byte[lengthEachTime];

        int copied = 0;

        while (copied <= ((int)fileToCopy.Length - lengthEachTime))//拷貝主體部分

        {

          lengthToCopy = fileToCopy.Read(buffer, 0, lengthEachTime);
          fileToCopy.Flush();
          copyToFile.Write(buffer, 0, lengthEachTime);
          copyToFile.Flush();
          copyToFile.Position = fileToCopy.Position;
          copied += lengthToCopy;

        }

        int left = (int)fileToCopy.Length - copied;//拷貝剩餘部分
        lengthToCopy = fileToCopy.Read(buffer, 0, left);
        fileToCopy.Flush();
        copyToFile.Write(buffer, 0, left);
        copyToFile.Flush();

      }

      else//如果整體拷貝,即每次拷貝內容大於文件總長度

      {

        byte[] buffer = new byte[fileToCopy.Length];
        fileToCopy.Read(buffer,0,(int)fileToCopy.Length);
        fileToCopy.Flush();
        copyToFile.Write(buffer, 0, (int)fileToCopy.Length);
        copyToFile.Flush();

      }

      fileToCopy.Close();
      copyToFile.Close();

    }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章