欢迎光临散文网 会员登陆 & 注册

文件读取流和写入流

2023-04-02 00:36 作者:此城过客  | 我要投稿

当文件很大时,内容很多时,对文件的复制、写入,就不能再用以前的方法了。

对于大文件,得用流。

流,就相当于是管子,水管。

比如,要把一个碗的水,转放到另一个碗中去,你只需要把碗拿起来倒,就好了;可是,要把一个缸中的水,转存到另一个缸中,我们不可能把缸端起来倒,那样不现实。我们可以用一根水管,慢慢的输送。

那么流,就相当于是这根水管。

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是总的毫秒,

文件读取流和写入流的评论 (共 条)

分享到微博请遵守国家法律