国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 02:40:12
字體:
來源:轉載
供稿:網友

利用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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉山县| 聊城市| 芜湖县| 滁州市| 保靖县| 平度市| 鄯善县| 内江市| 宜兰县| 外汇| 屏南县| 石棉县| 张家港市| 中方县| 栖霞市| 瓦房店市| 调兵山市| 临沧市| 来安县| 吉隆县| 宜阳县| 金秀| 漳州市| 都匀市| 永泰县| 金沙县| 福建省| 德清县| 军事| 边坝县| 延川县| 双牌县| 梁山县| 绥棱县| 曲水县| 桂林市| 本溪| 介休市| 清涧县| 麻阳| 三明市|