C#中大文件的复制

来源:互联网 发布:js display block 编辑:程序博客网 时间:2024/04/30 05:56

 

 最近又学习了两个类,FileStream,这个类是做什么的呢?

 先看一下MSDN给出的官方解释

 FileStream:公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。

 小编理解:主要是以流的形式来操作文件。


 什么是流?

 在日常生活中,有车流、水流等,而正是有了流的存在,才不至于交通拥挤,洪水爆发,而是以一种流的形式慢慢的来疏通(不知能否理解)。比如,我们在操作文件复制的时候,直接复制的话,会把大容量的文件直接放到内存中,导致复制的很慢,而采取流的话,会把文件以二进制的形式,慢慢的复制,从而提高了速度。


 大文件的复制

 下面来做一个大文件的复制的联系,来熟悉下这个类的操作。

 


  整个的流程就如上图所示,通过流的形式,把二进制文件读入到缓冲区,最后在写出,就实现了文件的复制。


 Demo展示

//读入大文件操作 static void Main(string[] args)        {                      //文件流读取大文件            using (FileStream fs = new FileStream(@"D:\软件3\Java\jdk-8u11-windows-i586.1406279697.exe", FileMode.OpenOrCreate))            {//写入操作                using (FileStream fs2 = new FileStream(@"C:\Users\ZHOU\Desktop\1.exe",FileMode.Create))                {                    //一次只读1M,定义缓冲区                    byte[] buffer = new byte[1024 * 1024*5];//用来判断字节                    int n = -1;                    do                    {                        //返回值,实际读到的字节个数,循环向缓冲区读取文件                                                n = fs.Read(buffer, 0, buffer.Length);                        //循环写入操作                        fs2.Write(buffer, 0, buffer.Length);                                     } while (n > 0);                             }                        }                    }

 总结

 关于流的操作还有很多,有兴趣的可以在查看下MSDN.






0 0