程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 利用FileStream實現多媒體文件復制,filestream多媒體

利用FileStream實現多媒體文件復制,filestream多媒體

編輯:C#入門知識

利用FileStream實現多媒體文件復制,filestream多媒體


 

    利用FileStream實現多媒體文件復制的主要思路在於利用兩個FileStream對象,一個讀取字節,另一個對象寫入字節既可。

    涉及知識點:

    1.通常我們操作的File類,FileStream,StreamWriter,StreamReader都是在System.IO命名空間下的。

    2.File類和FileStream類操作文件的區別在於,File相當於一次性讀取或寫入整個文件,可能會增加內存負擔,而使用FileStream則可以在讀取或者寫入的時候指定操作的字節數(有點類似於數據庫分頁查詢的效果),從而減輕對內存的開銷。(另File是靜態類,FileStream,StreamWriter,StreamReader則是非靜態類)。

    3.FileStream和StreamWriter,StreamReader的區別在於,StreamWriter,StreamReader只能操作文本文件,而FileStream既可以操作文本文件,也可以操作多媒體文件。

    4.FileStream,StreamWriter,StreamReader類每次使用完成後,因為GC無法清理他們的所產生的垃圾,所以我們必須手動調用Close(),Dispose()方法。

    5.凡是類(或基類)實現IDisposable接口,則我們可以用using語法自動清理他們產生的垃圾,無需調用Close(),Dispose()方法。常見的類如ado.net中的SqlConnection,SqlCommand類和本文中的FileStream,StreamWriter,StreamReader類。

代碼如下

 

static void CopyFile(string source, string target) { if (!File.Exists(source)) { throw new Exception("源文件不存在"); } //創建一個負責讀取的流 using (FileStream sfReader = new FileStream(source, FileMode.Open, FileAccess.Read)) { //創建一個負責寫入的流 using (FileStream sfWriter = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) { //每次讀取5M大小 byte[] buffer = new byte[1024 * 1024 * 5]; int size = 0; do { //返回的size為讀取到的實際字節數,可能等於5M,也可能小於5M size = sfReader.Read(buffer, 0, buffer.Length); //最後一個參數是實際字節數,而不是5M。 //如果這裡將size換成buffer.Length,當實際字節數不足5M時,會有很空字節填充。 sfWriter.Write(buffer, 0, size); } while (size != 0); }//using的作用,所以程序執行到這裡時,會自動釋放sfWriter的資源,無需手動調用Dispose() }; } View Code

 

調用方式

//利用FileStream實現多媒體文件復制 string source = @"C:\Users\Administrator\Desktop\source.avi"; string target = @"C:\Users\Administrator\Desktop\target.avi"; CopyFile(source, target); View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved