- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二进制文件的操作
所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以BMP等图象文件为例,它们的文件头中存放了是何种图形格式、图象大小、调色板等信息,要显示图象时先读取文件头以获得文件的详细信息,然后再按其格式把图象内容显示出来。用二进制方式可以操作任何的文件,当然至关重要的一点是要清楚了解所操作文件的文件头结构。
VB中二进制文件操作主要应用的方法和函数有:Open,Close,Get,Put等。
Open:在For后面的打开模式要用Binary。
Close:关闭文件。
Get:在指定位置取得文件的内容,如果省略位置则从当前位置读取。
Put:在指定位置写入文件,如果省略位置参数就从当前位置写。
下面结合代码讲解二进制文件的操作。
下述程序完成了将两个文件结合成一个文件以及将这个结合后的文件再拆分成原来的两个文件。文件头的结构是自己定义的,非常简单,共8个字节(也就是两个长整型的长度),前4个字节存放第一个文件的长度,后4个字节存放第二个文件的长度。为了更直观地表达文件的结构,现假设有两个文件,第一个文件长度是100字节,第二个文件是200字节,那么合并后得到的文件应该是308字节。按顺序来看,文件的结构是:
4第一文件的长度
4第二文件的长度
100第一文件的二进制内容
200第二文件的二进制内容
除了文件头的8字节长度是固定的后面的长度都会因文件的不同而变化的。
‘实现文件的合并
Private Sub MergeFile()
Dim strFileName1 As String 第一个文件
Dim strFileName2 As String 第二个文件
Dim strOutput As String 合并后的文件
Dim aryContent() As Byte 用来读取文件的数组,每次读取前要重定义
strFileName1 = c:\a.bmp
strFileName2 = c:\b.bmp
strOutput = c:\out.bmp
注意下面三个Open语句都是用Binary模式打开的
Open strOutput For Binary As #100
Open strFileName1 For Binary As #1
Open strFileName2 For Binary As #2
Put #100, , LOF(1) 取得第一文件的长度,并把它写入到合并文件的文件头中
Put #100, , LOF(2) 取得第二文件的长度,并写入到合并文件的文件头中
ReDim aryContent(LOF(1) - 1) 重定义数组,为读取文件做准备
Get #1, , aryContent() 取得第一文件的内容到数组
Put #100, , aryContent() 把第一文件的内容写到合并文件中
ReDim aryContent(LOF(2) - 1)
Get #2, , aryContent()
Put #100, , aryContent()
关闭文件
Close #1
Close #2
Close #100
End Sub
‘实现文件的拆分
Private Sub SplitFile()
Dim strFileName1 As String
Dim strFileName2 As String
Dim strFileSplit As String
Dim aryContent() As Byte
Dim lngLOF(1) As Long 存放从文件头取得的两个文件的长度
strFileName1 = c:\a2.bmp
strFileName2 = c:\b2.bmp
strFileSplit = c:\out.bmp
Open strFileSplit For Binary As #100
Get #100, , lngLOF(0) 取得第一文件的长度
Get #100, , lngLOF(1) 第二文件的长度
Open strFileName1 For Binary As #1
Open strFileName2 For Binary As #2
ReDim aryContent(lngLOF(0)-1) 用第一文件的长度重定义数组,为读取第一文件做准备
Get #100, 9, aryContent() 从第9字节,即文件后面开始读取第一文件的内容
文档评论(0)