『壹』 请问VB如何读写二进制文件
二进制文件的操作
所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以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
文本文件由于没有格式所以它的读写都比较简单和直观,而用二进制操作文件时其实质就是对文件头的理解,如果不知道文件头的结构那就无法对文件进行处理了,知道了文件头所包含的信息后,对文件的操作其实就是按规则进行Get、Put罢了。
『贰』 vb.net二进制怎么读取文件
一、二进制文件读写
1、写二进制数据到指定目录
『叁』 “vb怎么把二进制文件中的数据完全读取“
DimaryContent()AsByte
DimjAsLong
Open"C:27548.jpg"ForBinaryAs#1
ReDimaryContent(LOF(1)-1)
j=LOF(1)
Get#1,,aryContent
Close#1
Debug.Printj
上述代码可将二进制文件全部读到内存。
『肆』 VB 最快速度读取二进制文件.
VB可以Get 语句一次全部读入任何文件字节流。
Get 语句,将一个已打开的磁盘文件读入一个变量之中。
以下是读入文本文件的代码,显示于RichTextBox控件。
Private Sub Command1_Click()
Dim strWj As String
Dim aryContent() As Byte
CommonDialog1.CancelError = True ' 设置“CancelError”为 True
On Error GoTo ErrHandler
CommonDialog1.Flags = cdlOFNHideReadOnly ' 设置标志
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
CommonDialog1.FilterIndex = 2 ' 指定缺省的过滤器
CommonDialog1.ShowOpen ' 显示“打开”对话框
' 显示选定文件的名字
'MsgBox CommonDialog1.FileName
Open CommonDialog1.FileName For Binary As #1
ReDim aryContent(LOF(1) - 1)
Get #1, , aryContent
Close #1
strWj = StrConv(aryContent, vbUnicode)
RichTextBox1 = strWj
Exit Sub
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub
『伍』 vb 二进制打开文件
Dimfile()AsByte,MyFilesAsString
MyFiles="G:学习资料第六学期123.JPG"
OpenMyFilesForBinaryAs#1'使用二进制方法打开文件
ReDimfile(LOF(1)-1)AsByte'因为数组从0开始,所以这里数组上标要减去1
Get#1,,file'把文件内容存入数组
Close
Dima(1,1)
DimiAsInteger,jAsInteger
Fori=0To1
Forj=0To1
a(i,j)=file(179+i*(2-1)+j)
Next
Next
『陆』 VB中二进制文件的内容怎么读取
读入的数据是以10进制形式显示的 要10转2处理后再判断
Private Function TenToTwo$(ByVal varNum As Variant)
Dim returnString(1) As String
Dim ModNum As Integer
Dim I As Integer
Dim Num(1) As String
On Error Resume Next
Dim ClsNum
ClsNum = Split(varNum, ".")
Num(0) = ClsNum(0)
'MsgBox Num(0)
Num(1) = Format("0." & ClsNum(1), "0.0000000000")
'ÕûÊý²¿·Ö
Do While Val(Num(0)) > 0
ModNum = Num(0) Mod 2
Num(0) = Num(0) \ 2
returnString(0) = Trim(Str(ModNum)) + returnString(0)
Loop
'MsgBox returnString(0)
'СÊý²¿·Ö
I = 0
Do While Val(Num(1)) <> 0
On Error GoTo Err:
ModNum = Left(Num(1) * 2, 2)
returnString(1) = returnString(1) & Trim(Str(ModNum))
ClsNum = Split(Num(1) * 2, ".")
Num(1) = Format("0." & ClsNum(1), "0.0000000000")
I = I + 1
If I > 10 Then
Num(1) = "0"
End If
Loop
'TenturnTwo = returnString(0) & "." & returnString(1)
Err:
'MsgBox returnString(0)
TenToTwo = returnString(0) & IIf(InStr(CStr(varNum), ".") = -1, "." & returnString(1), "")
End Function
『柒』 VB中如何读取写入二进制文件
数字、字母、符号这写转换成ASCII码+其他固定数字,然后再存放到文件中。
『捌』 以二进制的形式打开并读取文件(VB).
vb支持直接读取图片文件的,不需要用open打开文件了
比如要加载内c:\windows\winnt.bmp图片文件到picture1图片框中容:
picture1.picture
=
loadpicture("c:\windows\winnt.bmp")
『玖』 怎么用vb6以二进制读写文件
Pirvate Sub Sub1() 'C:\Data.exe 到 C:\Data.txt
Open "C:\Data.exe" For Binary As #1
Open "C:\Data.txt" For Binary As #2
Dim i As Byte
Do While Not EOF(1)
Get #1, , i
Put #2, , i
Loop
Close #1
Close #2
End Sub
Pirvate Sub Sub2() 'C:\Data.txt 到 C:\Data.exe
Open "C:\Data.txt" For Binary As #1
Open "C:\Data.exe" For Binary As #2
Dim i As Byte
Do While Not EOF(1)
Get #1, , i
Put #2, , i
Loop
Close #1
Close #2
End Sub
楼上的老兄说的很对,确实不是“1”和“0”,因为虽然内容由“1”“0”组成,但是这是硬盘碟片上的痕迹,而程序(二进制方式)所读写的是字节。然后,字节/双字节再被翻译成字符,再连接成字符串。这就是你在“记事本”中打开 EXE 看到的东西,所谓的“乱码”。
『拾』 VB以二进制读取文件
文本文件也是0和1啊,但是你用变量a读出来的不是一个位,如果你能读出来一个位,就是1个bit,而不是一个字节或者多个字节,那么出来的就是0和1了。在你的程序中,变量a成了字符串型,当然不会是0和1。如果将a定义成byte类型,那么通过运算将a的位一个bit一个bit的读出来就可以了