VB 二进制文件的操作

VB中的二进制文件操作涉及Open、Close、Get和Put等函数。本文通过示例程序解释如何合并和拆分二进制文件,强调理解文件头结构的重要性。文件头通常包含文件格式、大小等信息,正确操作文件头是二进制文件处理的关键。
摘要由CSDN通过智能技术生成

所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以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字节,即文件后面开始读取第一文件的内容
    Put #1, , aryContent() '把取得的内容写入到拆分文件中
    ReDim aryContent(lngLOF(1) - 1)
    Get #100, 9 + lngLOF(0) + 1, aryContent() '从第9字节再加上第一文件的长度处开始读取第二文件的内容,这里可以清楚地看到文件头的作用了
    Put #2, , aryContent
    Close #1
    Close #2
    Close #100
    MsgBox "拆分完成。", vbInformation
End Sub

 文本文件由于没有格式所以它的读写都比较简单和直观,而用二进制操作文件时其实质就是对文件头的理解,如果不知道文件头的结构那就无法对文件进行处理了,知道了文件头所包含的信息后,对文件的操作其实就是按规则进行Get、Put罢了。


http://www.cxy.me/doc/5352.htm

相关参考


VB 二进制文件的操作

进制转化进10进制数

VB 二进制文件的操作

VB 二进制数组与十六进制字符串相互转换

VB 进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转

 


VB相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值