c#使用文件流复制一个任意文件

  

文件流,顾名思义,文件流,流是字节流。我的理解是,硬盘上存在一个字节流,内存里也有一个字节流,它们是对应的。程序运行时,我们只能对内存里的字节流直接操作,在它被关闭的时候,它的内容自动写入硬盘上的相应字节流。
  复制一个文件的基本思路是:逐一读取原文件流的字节,逐一写入新文件流中,分别用到文件流的ReadByte()和WriteByte()方法。这里要注意的是,读取时以字节为单位,一个字节如下图所示

  

 C #使用文件流复制一个任意文件

  

是一个0和1组合的序列.ReadByte()读取一个字节后将这个序列求值,返回的是整形数值。如果读到文件的尽头了,不能成功读取字节了,返回的是1。这个设计是非常合理的。因为只要是个字节,总是能求出它大于或等于0的值的。没有字节了,就返回1了。这样的话,可以把1作为循环读取终止的标志。

  

我下面以一个图片文件的复制为例讲解。

  

在C盘新建一个画图文件,另存为png格式,文件名pic1。

  

然后执行以下代码:

        使用系统;   使用先;      名称空间演示   {   {类项目   公共静态void Main (string [] args)   {   fs1=new FileStream文件流(“c:/pic1.png”, FileMode.Open);//FileAccess是可有可无的。//FileAccess是额外的合同。   fs2=new FileStream文件流(“c:/pic2.png”, FileMode.Create);   int d;   字节b;   在((d=fs1.ReadByte ()) !=1)   {   b=(字节)d;   fs2。WriteByte (b);   }   fs1.Close ();   fs2.Close ();   控制台。写(“按任意键继续。”);   Console.ReadKey(真正的);   }   }   }      

会在c盘下生成一个和pic1一模一样的图片文件pic2。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

c#使用文件流复制一个任意文件