VB怎样从文件的x字节开始读取,读y个字节
如题了,搜索到了用字节读取文件,可以把整个文件用二进制读取,但文件非常的大,在需要数据的时候只要其中的一个小段,如何做到呢?
[解决办法]
Seek 语句示例
本示例使用 Seek 语句在文件内设置下一次读写的位置。示例中假设 TESTFILE 文件内含有用户自定义数据类型 Record 的记录。
Type Record ' 定义用户自定义数据类型。
ID As Integer
Name As String * 20
End Type
如果以随机方式打开文件,Seek 将读写位置设置到下一个记录。
Dim MyRecord As Record, MaxSize, RecordNumber ' 声明变量。
' 以随机文件方式打开文件。
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
MaxSize = LOF(1) \ Len(MyRecord) ' 取得文件中的记录的数。
' 用循环读入所有记录,但是从最后的记录开始往前读。
For RecordNumber = MaxSize To 1 Step - 1
Seek #1, RecordNumber ' 设置读写位置。
Get #1, , MyRecord ' 读入一个记录。
Next RecordNumber
Close #1 ' 关闭文件。
如果不以 Random 打开文件,则 Seek 设置下一个操作发生的位置。假设 TESTFILE 文件内含有文本数据。
Dim MaxSize, NextChar, MyChar
Open "TESTFILE" For Input As #1 ' 打开输入文件。
MaxSize = LOF(1) ' 取得文件的总字符数。
' 用循环读入所有记录,但是从最后的记录开始往前读。
For NextChar = MaxSize To 1 Step -1
Seek #1, NextChar ' 设置读写位置。
MyChar = Input(1, #1) ' 读入一字符。
Next NextChar
Close #1 ' 关闭文件。
[解决办法]
以二进制方式打开文件,
Open "filename" For Binary As #1
Seek #1, 位置
Option Explicit
Sub Main()
Dim hFile As Integer
Dim bytes() As Byte
Dim i As Long
hFile = FreeFile()
Open "C:\temp\1.txt" For Binary Access Read As #hFile
ReDim bytes(0 To 9) '长度为 10 字节
Get #hFile, 15, bytes '从第 15 个字节开始
Close #hFile
'验证一下读取的数据
For i = 0 To UBound(bytes)
Debug.Print i, Hex(bytes(i)), Chr(bytes(i))
Next
End Sub