導航:首頁 > 文件教程 > vb二進制讀取文件

vb二進制讀取文件

發布時間:2021-04-21 17:13:47

『壹』 請問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的讀出來就可以了

閱讀全文

與vb二進制讀取文件相關的資料

熱點內容
win10如何修改hosts文件 瀏覽:971
iphone的未接來電 瀏覽:134
如何新建一個文件夾word文檔 瀏覽:74
零售商運用了什麼樣的大數據 瀏覽:557
榮耀分身微信清理es文件瀏覽器 瀏覽:682
linux賬戶設置密碼 瀏覽:69
查看資料庫各表記錄數 瀏覽:968
linux查看文件的行數 瀏覽:692
fpga約束文件如何自動生成 瀏覽:377
linux打開的文件數 瀏覽:973
win8修改公用網路 瀏覽:324
linuxlcrt 瀏覽:30
編程里res是什麼意思 瀏覽:616
dm80082版本固件 瀏覽:37
蘋果手機用什麼可以打開psd文件 瀏覽:627
服務號和小程序的區別 瀏覽:888
360手機助手qq文件位置 瀏覽:693
如何學習數碼編程 瀏覽:60
微信消息發布出去 瀏覽:377
windows文件名一個個消失 瀏覽:907

友情鏈接