C# FileStream復(fù)制大文件
本文實例為大家分享了C# FileStream復(fù)制大文件的具體代碼,供大家參考,具體內(nèi)容如下
即每次復(fù)制文件的一小段,以節(jié)省總內(nèi)存開銷。當(dāng)然,本機復(fù)制也可以采用.NET內(nèi)部的System.IO.File.Copy方法。
/// <summary> /// 復(fù)制文件 /// </summary> /// <param name="fromFile">要復(fù)制的文件</param> /// <param name="toFile">要保存的位置</param> /// <param name="lengthEachTime">每次復(fù)制的長度</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)//如果分段拷貝,即每次拷貝內(nèi)容小于文件總長度 { 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//如果整體拷貝,即每次拷貝內(nèi)容大于文件總長度 { 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(); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:詳解C#方法中使用out參數(shù)做登錄判斷代碼實例
欄 目:C#教程
下一篇:詳解C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況
本文標(biāo)題:C# FileStream復(fù)制大文件
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4779.html
您可能感興趣的文章
- 01-10C#實現(xiàn)打開畫圖的同時載入圖片、最大化顯示畫圖窗體的方法
- 01-10WinForm實現(xiàn)窗體最大化并遮蓋任務(wù)欄的方法
- 01-10String.Format大全(C# Java)
- 01-10C#禁止textbox復(fù)制、粘貼、剪切及鼠標(biāo)右鍵的方法
- 01-10C#中深度復(fù)制和淺度復(fù)制詳解
- 01-10C#實現(xiàn)任務(wù)欄通知窗口
- 01-10C#.NET中如何批量插入大量數(shù)據(jù)到數(shù)據(jù)庫中
- 01-10C#連接數(shù)據(jù)庫的方法
- 01-10C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法
- 01-10C#實現(xiàn)Winform鼠標(biāo)拖動窗口大小時設(shè)定窗口最小尺寸的方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置