欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

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

来源:本站原创|时间:2020-01-10|栏目:C#教程|点击:

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

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

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

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

然后执行以下代码:

using System;
using System.IO;
 
namespace Demo
{
class Program {
 public static void Main(string[] args)
  {
 FileStream fs1 = new FileStream("c:/pic1.png",FileMode.Open);//FileAccess is dispensable.
   //FileAccess is the extra contract. 
 FileStream fs2 = new FileStream("c:/pic2.png",FileMode.Create);
 int d;
 byte b;
 while( ( d = fs1.ReadByte() ) != -1 )
 {
 b = (byte)d;
 fs2.WriteByte( b );
  }
 fs1.Close();
 fs2.Close();
 Console.Write("Press any key to continue . . . ");
 Console.ReadKey(true);
  }
    }
} 

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

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

上一篇:【C#基础】Substring截取字符串的方法小结(推荐)

栏    目:C#教程

下一篇:C#使用Json.Net进行序列化和反序列化及定制化

本文标题:C#使用FileStream复制一个任意文件

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/4753.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有