文件读取流和写入流
当文件很大时,内容很多时,对文件的复制、写入,就不能再用以前的方法了。
对于大文件,得用流。
流,就相当于是管子,水管。
比如,要把一个碗的水,转放到另一个碗中去,你只需要把碗拿起来倒,就好了;可是,要把一个缸中的水,转存到另一个缸中,我们不可能把缸端起来倒,那样不现实。我们可以用一根水管,慢慢的输送。
那么流,就相当于是这根水管。

FileStream readFileStream = new FileStream(@"C:\Users\Administrator\Desktop\坦克大战.rar",FileMode.Open,FileAccess.Read);
readFileStream.ReadByte();//读取一个字节
FileStream writeFileStream = new FileStream(@"C:\Users\Administrator\Desktop\坦克大战1.rar",FileMode.Create,FileAccess.Write);
writeFileStream.WriteByte();//写入一个字节
||或者可以边读边写:
int nextByte = -1;
while ((nextByte = readFileStream.ReadByte()) != -1)
{
writeFileStream.WriteByte((Byte)nextByte);
}
写入完了之后,要关闭流,相当于是把水管撤掉。
顺序是,先开的后关;后开的,先关。就等于是那个流离你最近,你先关哪个。
writeFileStream.Close();
readFileStream.Close();
||优化读取和写入——把水管增粗
一次读写一个字节,有点太慢了,虽然不能一次全读写完,但每次只读写一个,也太慢了。
要把水管增粗。
ReadByte方法,是一次读取一个字节
Read方法,是一次可以读取很多个字节。具体多少由自己定。
writeFileStream.Write(buffer,0,count);//buffer表示把这个数组里面的数据写入
//0表示从0这个索引开始写入
//写入count个数据,
具体语句如下:
FileStream readFileStream = new FileStream(@"C:\Users\Administrator\Desktop\坦克大战.rar",FileMode.Open,FileAccess.Read);
readFileStream.ReadByte();//读取一个字节
FileStream writeFileStream = new FileStream(@"C:\Users\Administrator\Desktop\坦克大战1.rar",FileMode.Create,FileAccess.Write);
int length = 1024;
byte[] buffer = new byte[1024];
int count = -1;
while ((count = readFileStream.Read(buffer,0,1024)) != 0)
{
writeFileStream.Write(buffer,0,count);
}
writeFileStream.Close();
readFileStream.Close();
DateTime after = DateTime.Now;//结束后的时间点
TimeSpan ts=after.Subtract(before);//把结束时间点,和开始时间点相减,得到过程时长
Console.WriteLine(ts.TotalMilliseconds);//TotalMilliseconds是总的毫秒,