项目当中需要读取采集生成的AVI文件大小,特记录如下:
'获得文件大小
Public Function GetFileSizeByName(ByVal sFileName As String) As Double
On Error GoTo ErrHandle
Dim FileHandle As Long
Dim FileInfo As BY_HANDLE_FILE_INFORMATION
Dim lpReOpenBuff As OFSTRUCT
Dim Ret As Currency
Dim fl As Double
1000
fl = FileLen(sFileName)
1001
If fl < 0 Then
1002
FileHandle = OpenFile(sFileName, lpReOpenBuff, OF_READ)
1003
Call GetFileInformationByHandle(FileHandle, FileInfo)
1004
Call CloseHandle(FileHandle)
1005
CopyMemory ByVal VarPtr(Ret), ByVal VarPtr(FileInfo.nFileSizeLow), ByVal 4&
1006
CopyMemory ByVal VarPtr(Ret) + 4, ByVal VarPtr(FileInfo.nFileSizeHigh), ByVal 4&
1007
GetFileSizeByName = CDbl(FormatNumber(Ret * 10000, 0, , , vbTrue))
1008
Else
1009
GetFileSizeByName = fl
1010
End If
1011
Exit Function
ErrHandle:
If Err.Number <> 0 Then
WriteLog "<---" & CStr(Now) & "--->" & vbCrLf & String$(64, "*") & vbCrLf & _
"错误函数:采集控件TJCapture->modGlobal->GetFileSizeByName" & vbCrLf & _
"错误编号:" & Err.Number & vbCrLf & _
"错误描述:" & Err.Description & vbCrLf & vbCrLf & _
"sFileName = " & sFileName & vbCrLf & _
"错误地址:" & Erl & vbCrLf & String$(64, "*") & vbCrLf
Err.Clear
End If
End Function
另外说明下,代码每行前面的数字是为了干吗的,请注意这句 《"错误地址:" & Erl 》,其实很简单VB中有个函数就是返回出错的行数这个函数叫Erl,配合前面的标签,就能在代码出错的时候定位到错误所在行...
文章来自:VB获取超过2G文件的大小
★VB部分相关文章推荐:★