這篇文章主要爲大家詳細介紹了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(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。