不要写太大比如8G 那就内存溢出了

时间:2021-09-04 09:17:10

FileStream和File的区别  后者比前者给内存带来压力大。

FileStream可以操纵字节也就是可以生存任何类型的文件。

1.FileStream读文件操纵

//OpenOrCreate:有就打开,没有就创建 //FileStream 3个参数的含义: 1.path 2,针对文件什么操纵,,3针对文件内容怎么操纵 FileStream fsRead = new FileStream(@"D:\extension_6_12.crx", FileMode.OpenOrCreate, FileAccess.Read); byte[]buffer=new byte[1024*1024*5];//1024*1024*5 只读取5M,不要写太大好比8G 那就内存溢出了。 //if file byte.length=3.8M //返回本次实际读取的有效字节数。 int r=fsRead.Read(buffer, 0, buffer.Length);//从0读,到最大内容长度5M. //将字节数组解码成字符串 string s = Encoding.Default.GetString(buffer,0,r); //只解码内容的部分 //*,GC垃圾回收措置惩罚惩罚器不会本身自动回收 fsRead.Close(); //释放资源 fsRead.Dispose(); Console.WriteLine(s); Console.ReadKey();

  

2.FileStream写文件操纵

// 使用FileStream写入数据 using (FileStream fs=new FileStream(@"D:\\new.txt",FileMode.OpenOrCreate,FileAccess.Write)) { string str="666666666666666666666"; byte[] buff = Encoding.UTF8.GetBytes(str); fs.Write(buff,0,buff.Length);//如果文件存在那么将,一个一个字符笼罩文件 } Console.WriteLine("写入文件"); Console.ReadKey();

3.多媒体文件的复制

将多媒体文件读出来,让后写入到另一个文件

string source = @"c:\\zumba.mp3"; string targetSource = @"D:\\zumba.mp3"; using (FileStream fsRead=new FileStream(source,FileMode.OpenOrCreate,FileAccess.Read)) { using (FileStream fsWrite=new FileStream(targetSource,FileMode.OpenOrCreate,FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 6]; //最多读取6M //文件对照大所以循环读取 //返回本次读取实际代替的字节数。 while (true) { int r = fsRead.Read(buffer, 0, buffer.Length); //如果返回长度0意味着读取完毕 if(r==0) { break; } fsWrite.Write(buffer, 0, r); } } }