版权声明:欢迎分享 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);
}
}
}
}