用C#实现文件分割合并器2010-09-15 天极网 马金虎文件分割器主要是为了解决实际生活中携带大文件的问题,由于存储介质容量的限制,大的文件往往不能够一下子拷贝到存储介质中,这只能通过分割程序把的文件分割多个可携带小文件,分步拷贝这些小文件,从而实现携带大文件的目的。而合并器的作用则能够把这些分割的小文件重新合并,恢复原来的文件。.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 | 将一个字节写入文件流的当前位置。 |