在VB中读写二进制文件可通过以下两种主要方式实现: 低级文件操作(如`Open`语句)和 高级类库操作(如`FileStream`、`BinaryReader`和`BinaryWriter`)。以下是具体方法及示例:
一、低级文件操作(推荐用于复杂场景)
使用`Open`语句直接对文件进行读写操作,需手动管理文件流和读写位置。
1. 写入二进制数据
```vb
Dim filePath As String = "example.bin"
Dim data() As Byte = { &H01, &H02, &H03, &H04 }
' 以覆盖模式创建文件
Open filePath For Output As 1
For i As Integer = LBound(data) To UBound(data)
Write 1, data(i)
Next i
Close 1
```
2. 读取二进制数据
```vb
Dim filePath As String = "example.bin"
Dim buffer(1 To 4) As Byte
' 从文件读取数据到缓冲区
Open filePath For Input As 1
For i As Integer = 1 To 4
buffer(i) = Read 1
Next i
Close 1
' 输出读取的数据
Debug.Print "读取的数据: " & Hex(buffer(1)) & ", " & Hex(buffer(2)) & ", " & Hex(buffer(3)) & ", " & Hex(buffer(4))
```
二、高级类库操作(推荐用于通用场景)
使用`FileStream`结合`BinaryReader`和`BinaryWriter`简化读写操作,提供更丰富的功能(如加密、定位读写等)。
1. 写入二进制数据
```vb
imports System.IO
Dim filePath As String = "example.bin"
Dim data() As Byte = { &H01, &H02, &H03, &H04 }
' 使用FileStream写入数据(覆盖模式)
Using fs As New FileStream(filePath, FileMode.Create)
Using writer As New BinaryWriter(fs)
writer.Write(data, 0, data.Length)
End Using
End Using
```
2. 读取二进制数据
```vb
imports System.IO
Dim filePath As String = "example.bin"
Dim buffer(1 To 4) As Byte
' 使用FileStream读取数据
Using fs As New FileStream(filePath, FileMode.Open)
Using reader As New BinaryReader(fs)
reader.Read(buffer, 0, buffer.Length)
End Using
End Using
' 输出读取的数据
Debug.Print "读取的数据: " & Hex(buffer(1)) & ", " & Hex(buffer(2)) & ", " & Hex(buffer(3)) & ", " & Hex(buffer(4))
```
三、注意事项
文件模式:
读写二进制文件需使用`Binary`模式(`Open`语句的`mode`参数设为`Binary`)。
资源管理:
使用`Using`语句自动关闭文件流,避免资源泄漏。
数据对齐:
二进制文件需注意数据对齐问题,建议使用`FileStream`的`Seek`方法定位读写位置。
四、扩展应用
加密解密:通过`BinaryWriter`写入加密数据,使用`BinaryReader`读取后解密。
文件合并/拆分:可先读取多个文件内容合并到一个新文件,或从合并文件中拆分原始数据。
以上方法可根据具体需求选择使用,建议优先采用高级类库操作以简化代码并提升可维护性。