【 C# 】多媒体文件的读取及复制

版权声明:欢迎分享 https://blog.csdn.net/qq_42791845/article/details/83965876

前言

相较于File类,FileStream类更适合用于读取大型文件,以及非文本文件。相同点是都是对字节进行操作。不同点是FileStream是以流的形式读取,打个比方,同样是搬一车砖,File类是直接把整车砖搬下来,对劳动者的负担比较大,而FileStream类是一块一块搬,或者几块几块搬,对劳动者负担较小。

1/创建FileStream对象 new FileStream(操作文件的路径,对文件的操作,对文件内数据的操作)

 FileStream fsRead = new FileStream(@"C:\Users\Desktop\new.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);

2/读取文件 Read()

//读取    
byte[] buffer = new byte[1024*1024*5];    
int r = fsRead.Read(buffer,0,buffer.Length);//返回读取的实际有效字节数
        
//解码    
string s = Encoding.UTF8.GetString(buffer,0,r);

3/写入文件 Write()

using(FileStream fsWrite = new  FileStream(@"C:\Users\Desktop\new.txt",FileMode.OpenOrCreate,FileAccess.Write)
	{
		string str = "Nick帅的被人砍";
		byte[] buffer = Encoding.UTF8.GetBytes(str);
		fsWrite.Write(buffer,0,buffer.Length);
	}

4/用FileStream实现多媒体文件的复制

source:被复制文件路径

target:新文件路径

public static void CopyFile(string source, string target)
        {
            //创建一个负责读取的流
            using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
            {
                //创建一个负责写入的流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer =new byte[1024*1024*5];
                    while (true)//循环读取
                    {
                        //返回实际读取的字节数
                        int r = fsRead.Read(buffer, 0, buffer.Length);
                        if (r == 0)//读取不到时,结束循环
                        {
                            break;
                        }
                        fsWrite.Write(buffer,0,r);
                    }                
                }
            }
        }

猜你喜欢

转载自blog.csdn.net/qq_42791845/article/details/83965876