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

 更新时间:2019年05月04日 09:30:05   作者:CGGUANG  
这篇文章主要为大家详细介绍了C#使用FileStream复制一个任意文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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# web访问mysql数据库-整理归纳总结

    浅析C# web访问mysql数据库-整理归纳总结

    本篇文章是对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结,需要的朋友可以参考下
    2013-07-07
  • 读写XML文件的内容并将其显示在ListView控件上的方法

    读写XML文件的内容并将其显示在ListView控件上的方法

    下面小编就为大家带来一篇读写XML文件的内容并将其显示在ListView控件上的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 详解C#中的依赖注入和IoC容器

    详解C#中的依赖注入和IoC容器

    这篇文章主要介绍了C#中的依赖注入和IoC容器的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • 基于C#中XmlReader读取Xml的深入分析

    基于C#中XmlReader读取Xml的深入分析

    本篇文章是对C#中XmlReader读取Xml进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 关于C#线程的全面解析

    关于C#线程的全面解析

    这篇文章主要介绍了关于C#线程的全面解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • c#读取xml文件到datagridview实例

    c#读取xml文件到datagridview实例

    c#读取xml文件到datagridview实例,需要的朋友可以参考一下
    2013-03-03
  • C# 可空类型的具体使用

    C# 可空类型的具体使用

    这篇文章主要介绍了C# 可空类型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C# DataTable与Model互转的示例代码

    C# DataTable与Model互转的示例代码

    这篇文章主要介绍了C#DataTable与Model互转的示例代码,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • C#登入实例

    C#登入实例

    本篇文章通过截图的方式向大家展示C#程序登陆实现的全过程,利用了C#三层架构的编写方法,希望对大家今后编写代码有所帮助
    2016-11-11
  • C#高性能动态获取对象属性值的步骤

    C#高性能动态获取对象属性值的步骤

    这篇文章主要介绍了C#高性能动态获取对象属性值的步骤,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12

最新评论