读文件: Option Explicit Const FILE_BEGIN = 0 Const OFS_MAXPATHNAME = 128 Const OF_CREATE = &H1000 Const OF_READ = &H0 Const OF_WRITE = &H1 Private Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName(OFS_MAXPATHNAME) As Byte End Type Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Sub Command1_Click() Dim mfile As String Dim hFile As Long Dim OF As OFSTRUCT mfile = "e:\mc\mmtest.jpg" hFile = OpenFile(mfile, OF, OF_READ) Dim buff() As Byte ReDim buff(50 - 1) SetFilePointer hFile, 1024, 0, FILE_BEGIN Dim ret As Long ReadFile hFile, buff(0), 50, ret, ByVal 0& If ret <> 50 Then MsgBox "error" End If CloseHandle hFile End Sub写文件和这个类似,就不罗嗦了,说明一下用SetFilePointer设置当前的读写位置
Declare Function SetFilePointer Lib "kernel32" Alias "SetFilePointer" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long在一个文件中设置当前的读写位置 Long,返回一个新位置,它采用从文件起始处开始算起的一个字节偏移量。HFILE_ERROR意味着出错。会设置GetLastError hFile ---------- Long,系统文件句柄 lDistanceToMove - Long,字节偏移量 lpDistanceToMoveHigh - Long,指定一个长整数变量,其中包含了要使用的一个高双字偏移。可设为零(将声明变为ByVal),表示只使用lDistanceToMove 原文:A long variable containing a high double word offset to use. May be zero (change declaration to ByVal) to use only lDistanceToMove. dwMoveMethod --- Long,下述常数之一 FILE_BEGIN lOffset将新位置设为从文件起始处开始算的起的一个偏移 FILE_CURRENT lOffset将新位置设为从当前位置开始计算的一个偏移 FILE_END lOffset将新位置设为从文件尾开始计算的一个偏移这个函数与vb的seek语句类似。不要将函数用于通过vb的open命令打开的文件。利用这个函数,可以处理那些长度大于2^64字节的大型文件
Option Explicit
Const FILE_BEGIN = 0
Const OFS_MAXPATHNAME = 128
Const OF_CREATE = &H1000
Const OF_READ = &H0
Const OF_WRITE = &H1
Private Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Sub Command1_Click()
Dim mfile As String
Dim hFile As Long
Dim OF As OFSTRUCT
mfile = "e:\mc\mmtest.jpg"
hFile = OpenFile(mfile, OF, OF_READ)
Dim buff() As Byte
ReDim buff(50 - 1)
SetFilePointer hFile, 1024, 0, FILE_BEGIN
Dim ret As Long
ReadFile hFile, buff(0), 50, ret, ByVal 0&
If ret <> 50 Then
MsgBox "error"
End If
CloseHandle hFile
End Sub写文件和这个类似,就不罗嗦了,说明一下用SetFilePointer设置当前的读写位置
Long,返回一个新位置,它采用从文件起始处开始算起的一个字节偏移量。HFILE_ERROR意味着出错。会设置GetLastError
hFile ---------- Long,系统文件句柄
lDistanceToMove - Long,字节偏移量
lpDistanceToMoveHigh - Long,指定一个长整数变量,其中包含了要使用的一个高双字偏移。可设为零(将声明变为ByVal),表示只使用lDistanceToMove
原文:A long variable containing a high double word offset to use. May be zero (change
declaration to ByVal) to use only lDistanceToMove. dwMoveMethod --- Long,下述常数之一
FILE_BEGIN
lOffset将新位置设为从文件起始处开始算的起的一个偏移
FILE_CURRENT
lOffset将新位置设为从当前位置开始计算的一个偏移
FILE_END
lOffset将新位置设为从文件尾开始计算的一个偏移这个函数与vb的seek语句类似。不要将函数用于通过vb的open命令打开的文件。利用这个函数,可以处理那些长度大于2^64字节的大型文件