将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源。
FileStream:用来操作字节的(意思可以操作任何类型的文件,可以操作大文件)
StreamReader:StreamWriter:操作字符的(文本文件,对内存压力会小一些)
FileStream
1. 创建FileStream对象
对文件做什么操作,对文件数据做什么操作
FileStream fsRead=new FileStream(@”文件路径”,FileMode.OpenOrCreate,FileAccess.Read);
Byte[] buffer=new byte[1024*1024*5];
//实际3.8M 5M
//r返回本次实际读取到的有效字节数
Int r= FsRead.Read(buffer,0,buffer.length);
//将字节数组中每一个元素按照指定的格式解码为字符串
String s=Encoding.Default.GetString(buffer,0,r);
//关闭流
FsRead.Close();
//释放流所占用的资源
fsRead.Disposed();
Console.WriteLIne(s);
Console.ReadKey();
//使用FileStream来写入数据
using(FileStream fsWrite=newFileStream(@””,FileMode.OpenOrCreate,FileAccess.Write))
{
String str=”看我有没有把你覆盖掉”;
Byte[]buffer=Encoding.Defult.getBytes(str);
fsWrite.Write(buffer,0,buffer.length);
}
实现多媒体文件的复制
static void Main(string[] args)
{
//思路:就是先将要复制的多媒体文件读取出来,然后再写入到你指定的位置
stringsource = @"C:\Users\SpringRain\Desktop\1、复习.wmv";
stringtarget = @"C:\Users\SpringRain\Desktop\new.wmv";
CopyFile(source, target);
Console.WriteLine("复制成功");
Console.ReadKey();
}
public static voidCopyFile(string soucre, string target)
{
//1、我们创建一个负责读取的流
using (FileStreamfsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))
{
//2、创建一个负责写入的流
using (FileStreamfsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[]buffer = new byte[1024 * 1024 * 5];
//因为文件可能会比较大,所以我们在读取的时候应该通过一个循环去读取
while (true)
{
//返回本次读取实际读取到的字节数
int r =fsRead.Read(buffer, 0, buffer.Length);
//如果返回一个0,也就意味什么都没有读取到,读取完了
if (r== 0)
{
break;
}
fsWrite.Write(buffer,0, r);
}
}
}
}
StreamWriter与StreamReader
//使用StreamReader来读取一个文本文件
//using (StreamReader sr = newStreamReader(@"C:\Users\SpringRain\Desktop\抽象类特点.txt",Encoding.Default))
//{
// while(!sr.EndOfStream)
// {
// Console.WriteLine(sr.ReadLine());
// }
//}
//使用StreamWriter来写入一个文本文件
using (StreamWriter sw= new StreamWriter(@"C:\Users\SpringRain\Desktop\newnew.txt",true))
{
sw.Write("看我有木有把你覆盖掉");
}
Console.WriteLine("OK");
Console.ReadKey();