用文件流来对多媒体文件进行复制
用文件流的方法将一个多媒体文件从一个文件夹复制到另外一个文件夹
首先是创建一个需要复制的文件路径
再创建一个需要复制文件的指定路径
之后把这个复制的过程写成一个方法,传入这两个路径进去
方法中,创建一个读取的文件流,负责把需要复制的文件读取出来
再创建一个写入的文件流,负责把需要复制的文件写入到指定文件夹里
再创建一个字节数组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); } } } } } }