FileStream文件流(操作对象为字节,适用于所有文件)
StreamReader&StreamWriter:操作对象为字符
//
FileStream fsRead=new FileStream(@" ",FileMode.OpenOrCreat,File.Access.Read);//内容分别为:路径,对文件的操作选择,对文件内数据的操作选择
byte[] buffer=new byte[1024*1024*5];//创建缓存为5M
int r=fsRead.Read(buffer,0,buffer.Length);//每次向buffer内读取Length长度的数据,从0开始,返回值r为本次实际读取到的有效字节数
//下面解码
String s=Encoding.Default.GetString(buffer,0,r);//解码范围是:0—r
fsRead.Close();//关闭流
fsRead.Dispise();//释放占用的资源
**如果使用using,则可以省去关闭流和释放资源的步骤,会自动完成。
//
Using(FileStream fsWrite=new FileStream(@" ",FileMode.OpenOrCreate,FileAccess.Write))
{
string str="男";
byte[] buffer=Encoding.Default.GetBytes(str);
fsWrite.Write(buffer,0,buffer.Length);
}
//这里会覆盖相同大小的已有内容,将File.OpenOrCreate改为File.Append则为追加,不会覆盖
使用FileStream实现多媒体文件的复制
//先读,再写。
String source=@" ";//源路径
String target=@" ";//复制路径
CopyFile(source,target);//调用自写函数
Public Static void CopyFile(String source, String target)
{using (FileStream fsRead=newFileStream(source,FileMode.Open,FileAccess.Read))
//1.创建了负责读取的流;2.下面创建负责写入的流
{
using(FileStreamfsWrite=new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write))
{
byte[]buffer=new byte[1024*1024*5];
while(true)
{
intr=fsRead.Read(buffer,0,buffer.Length);
if(r==0)
{
break;
}
fsWrite.Write(buffer,0,r);
}
}
}
}
StreamReader&StreamWriter
//
using(StreamReader sr=new StreamReader(@" "))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());//持续读取,直到读到流尾
}
}
using(StreamWriter sw=new StreamWriter(@" "),true)//加true表示写入是不覆盖
{
sw.Write("男");
}
//