科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C#实现文件分割合并器

Visual C#实现文件分割合并器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文的主要内容就是探讨一下Visual C#在对文件编程中的一个比较流行的应用--文件分割器和合并器

作者:马金虎 来源:天极网 2007年11月13日

关键字: Visual C# 文件 分割合并器

  • 评论
  • 分享微博
  • 分享邮件

文件分割器主要是为了解决实际生活中携带大文件的问题,由于存储介质容量的限制,大的文件往往不能够一下子拷贝到存储介质中,这只能通过分割程序把的文件分割多个可携带小文件,分步拷贝这些小文件,从而实现携带大文件的目的。而合并器的作用则能够把这些分割的小文件重新合并,恢复原来的文件。.Net FrameWork SDK中提供的许多处理文件的类库,通过这些类能够简捷、灵活的实现对文件的操作。本文的主要内容就是探讨一下Visual C#在对文件编程中的一个比较流行的应用--文件分割器和合并器。下面就首先了解一下Visual C#在实现分割、合并器时所使用的.Net FrameWork SDK提供的类库及其在本文中的使用方法。

  一.本文程序设计、调试和运行的环境:

  (1).微软公司视窗2000服务器版。

  (2).Visual Studio .Net 2003企业构建版,.Net FrameWork SDK版本号4322。

  二.Visual C#实现分割合并程序时使用的类库及其使用方法:

  Visual C#对文件的编程所使用的类库一般都在.Net FrameWork SDK中的System.IO命名空间中,System.IO命名空间提供了在数据流和文件层次上的存取方法,存取方法一般都提供同步、异步二种模式。Visual C#实现分割合并程序时主要使用的是在数据流层次上的类,主要是:FileStream、BinaryReader和BinaryWriter,这三个类一般都提供了同步、异步模式来存取文件数据流,本文一般采用同步模式,虽然在性能上有所欠缺,但使用起来非常方便,也不容易出错。

  FileStream类对Visual C#实现文件编程是非常重要的类,具体表现在对文件系统中文件的读、写操作上。FileStream类为适应各种具体操作,提供了许多构造函数。本文是使用文件路径对应的字符串和文件打开方式来创建、初始化FileStream实例的。具体语法如下:

public FileStream (
 string path ,
 FileMode mode
) ;

  下面是使用此构造函数创建、初始化FileStream实例的具体代码:

FileStream SplitFileStream = new FileStream ( "C:\\temp.avi" , FileMode.Open ) ;

  表01是FileStream类的常用属性及其说明:

属性 说明
CanRead 获取指示当前流是否支持读取值。
CanSeek 获取指示当前流是否支持查找值。
CanWrite 获取指示当前流是否支持写入值。
Handle 获取当前FileStream对象所封装文件的操作系统文件句柄。
IsAsync 获取指示FileStream是异步还是同步打开的值。
Length 获取用字节表示的流长度。
Name 获取传递给构造函数的FileStream的名称。
Position 获取或设置此流的当前位置。
     表01:FileStream类常用属性及其说明

  FileStream类中最重要的是其中的方法,表02是FileStream类中的常用方法及其说明:

方法 说明
BeginRead 开始异步读。
BeginWrite 开始异步写。
Close 关闭文件并释放与当前文件流关联的任何资源。
EndRead 等待挂起的异步读取完成。
EndWrite 结束异步写入,在I/O操作完成之前一直阻塞。
Flush 清除该流的所有缓冲区,使所有缓冲的数据被写入基础设备。
Lock 防止其他进程访问某个文件的全部或部分。
Read 从流中读取字节块并将该数据写入给定缓冲区中。
ReadByte 从文件中读取一个字节,并将读取位置提升一个字节。
Seek 将该流的当前位置设置为给定值。
SetLength 将该流的长度设置为给定值。
Unlock 允许其他进程访问以前锁定的某个文件的全部或部分。
Write 使用从缓冲区读取的数据将字节块写入该流。
WriteByte 将一个字节写入文件流的当前位置。

  其中:BeginRead、EndRead和BeginWrite、EndWrite是二对异步方法,其功能相当于Read和Write方法。

  BinaryReader类提供了以FileStream类的实例为参数的构造函数,其语法比较简单,具体如下:

public BinaryReader ( Stream ) ;

  下面是通过此构造函数创建、初始化BinaryReader实例的具体代码,其中SplitFileStream是FileStream实例:

BinaryReader SplitFileReader = new BinaryReader ( SplitFileStream ) ;

  BinaryReader类为从当前的数据流中读取各种读取数据的方法,掌握了这些方法的使用方法也就掌握了BinaryReader类,表03是BinaryReader类中从数据流中读取数据的方法及其说明:

方法 说明
Read 从基础流中读取字符,并提升流的当前位置。
ReadBoolean 从当前流中读取Boolean,并使该流的当前位置提升1个字节。
ReadByte 从当前流中读取下一个字节,并使流的当前位置提升1个字节。
ReadBytes 从当前流中将指定个字节读入字节数组,并使当前位置提升指定个字节。
ReadChar 从当前流中读取下一个字符,并根据所使用的
ReadChars 从当前流中读取指定个字符,以字符数组的形式返回数据,并根据所使用的Encoding和从流中读取的特定字符,提升当前位置。
ReadDecimal 从当前流中读取十进制数值,并将该流的当前位置提升十六个字节。
ReadDouble 从当前流中读取8字节浮点值,并使流的当前位置提升8个字节。
ReadInt16 从当前流中读取2字节有符号整数,并使流的当前位置提升2个字节。
ReadInt32 从当前流中读取4字节有符号整数,并使流的当前位置提升4个字节。
ReadInt64 从当前流中读取8字节有符号整数,并使流的当前位置提升4个字节。
ReadSByte 从此流中读取一个有符号字节,并使流的当前位置提升1个字节。
ReadSingle 从当前流中读取4字节浮点值,并使流的当前位置提升4个字节。
ReadString 从当前流中读取一个字符串。字符串有长度前缀,一次7位地被编码为整数。
ReadUInt16 使用Little Endian编码从当前流中读取2字节无符号整数,并将流的位置提升2个字节。
ReadUInt32 从当前流中读取4字节无符号整数并使流的当前位置提升4个字节。
ReadUInt64 从当前流中读取8字节无符号整数并使流的当前位置提升8个字节。
      表03:BinaryReader类中从数据流读取数据方法及其说明

  BinaryWriter类也提供了使用以FileStream类的实例为参数的构造函数,其语法和BinaryReader类提供的构造函数非常相似,具体语法如下:

public BinaryWriter ( Stream ) ;

  下面是通过此构造函数创建、初始化BinaryWriter实例的具体代码,其中SplitFileStream是FileStream实例:

BinaryWriter TempWriter = new BinaryWriter (SplitFileStream) ;

  BinaryWriter类结构较BinaryReader简单,表04是BinaryWriter类中的常用方法及其说明:

方法 说明
Close 关闭当前的BinaryWriter和基础流。
Flush 清理当前编写器的所有缓冲区,使所有缓冲数据写入基础设备。
Seek 设置当前流中的位置。
Write 将值写入当前流。
          表04:BinaryWriter类常用方法及其说明

  至此Visual C#实现分割合并程序时所主要使用的类就介绍完了,下面就来介绍Visual C#实现分割文件的解决方法及其具体实现步骤。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章