1. 程式人生 > 其它 >用檔案流來對多媒體檔案進行復制

用檔案流來對多媒體檔案進行復制

用檔案流的方法將一個多媒體檔案從一個資料夾複製到另外一個資料夾

首先是建立一個需要複製的檔案路徑

再建立一個需要複製檔案的指定路徑

之後把這個複製的過程寫成一個方法,傳入這兩個路徑進去

方法中,建立一個讀取的檔案流,負責把需要複製的檔案讀取出來

再建立一個寫入的檔案流,負責把需要複製的檔案寫入到指定資料夾裡

再建立一個位元組陣列byte,設定這個陣列的長度用來規定每次能夠讀取的位元組長度,這裡我設定的為1024*1024*10,也就是10M

因為檔案過大,一次是讀不完的,需要用一個迴圈來反覆讀,一直讀到讀不出來位元組位置,就是返回一個0,跳出迴圈

宣告一個int變數用來接收本次讀取中實際讀取到的值的長度,如果是空的就不需要補空格了

如果這個變數返回一個0,那就說明已經沒有需要讀的位元組了,就跳出迴圈

如果沒讀到0,就一直迴圈寫入,寫入我們規定的每次讀取的位元組長度buffer,然後從0寫到實際讀取的長度r,因為最後一次不一定是符合滿長度的10M

最後在主程式中呼叫這個方法,我這裡是把這個不能說的祕密複製為new,放在另外一個資料夾裡,因為檔案很大,大概2個g,每次讀取的位元組數10M,所以用時比較長

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 使用檔案流來實現多媒體檔案的複製 { class Program { static void Main(string[] args) { //先把需要複製的多媒體檔案讀取出來,再把它寫入指定的位置 string source = @"F:\影音\電影\不能說的祕密.mkv"; string target = @"F:\程式測試資料夾\new.mkv"; CopyFile(source, target); Console.WriteLine(
"ok"); Console.ReadKey(); } public static void CopyFile(string source,string target) { //先建立一個負責讀取的流 using (FileStream fileRead = new FileStream(source, FileMode.Open, FileAccess.Read)) { //建立一個負責寫入的流 using (FileStream fileWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 100]; //因為檔案可能會比較大,所以我們在讀取的時候,應該 通過一個迴圈去讀取 while(true) { //返回本次讀取實際讀取到的值 int r = fileRead.Read(buffer, 0, buffer.Length); //如果返回一個0,耶爾就意味著什麼都沒有讀到,讀取結束 if(r==0) { break; } fileWrite.Write(buffer, 0, r); } } } } } }