'我自己试过,API比Open也就快大概30%~50%左右
'下面是我用API读写文件的代码,你参考一下
'tmpWc是一个自定义类型
'设置列标头结构文件路径
gstrHeaderFile = App.Path & DIR_SPLIT & LISTVIEW_HEADER_FILE
'检测列标头结构文件是否存在
If Len(Dir(gstrHeaderFile)) = FILE_NOT_EXIST Then
gsteStartupError = ERROR_CFGMISSING
GoTo ExitDialog
End If
'打开文件,获得文件句柄
hFile = CreateFile(gstrHeaderFile, GENERIC_READ, FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, 0, 0)
'根据句柄获得文件长度
fSize = GetFileSize(hFile, ByVal 0&)
'根据文件长度,判断文件大小是否符合
If (fSize Mod Len(tmpWc)) <> 0 Then
Call CloseHandle(hFile)
gsteStartupError = ERROR_CFGBROKEN
GoTo ExitDialog
End If
'根据文件长度,设置列表数量
nCount = fSize / Len(tmpWc)
'重新定义列表数量
ReDim gWC(0 To nCount - 1) As WNDCONFIG
For i = 0 To nCount - 1
'设置文件读取起点位置
SetFilePointer hFile, i * Len(gWC(i)), ByVal 0&, FILE_BEGIN
'读取内容,并将该内容赋值到变量中
ReadFile hFile, gWC(i), Len(gWC(i)), Rtn, ByVal 0&
'根据调用API函数所返回的真正读取文件内容字节数与实际变量大小对比,以判断读取文件是否出错
If Rtn <> Len(gWC(i)) Then
Call CloseHandle(hFile)
gsteStartupError = ERROR_CFGFAILED
GoTo ExitDialog
End If
Next i
'关闭打开的文件句柄
CloseHandle hFile