×

filesize

[求助]用WinAPI的Filesize查看文件大小?vb如何利用GetFileSize来获得文件大小

admin admin 发表于2022-06-08 14:02:00 浏览172 评论0

抢沙发发表评论

[求助]用WinAPI的Filesize查看文件大小


呵呵,原来是AX的WinAPI::FileSize有个小Bug.如果文件的字节数大于int 32位的最大值.那么系统将无法获取正确的字节数.系统也没任何异常抛出.如何解决呢? 其实你只要修改他的变量声明和返回值为int64就OK了.即(int - 》 int64)client static int64 fileSize(str _filename){ int64 size; System.IO.FileInfo fileInfo; ; fileInfo = new System.IO.FileInfo(_filename); size = fileInfo.get_Length(); return size;}

vb如何利用GetFileSize来获得文件大小


vb来获得文件大小,有以下几种方式,其中GetFileSize也是其中一种:
1、利用GetFileSize来获得,需要先定义GetFileSize的api函数:
Private Declare Function GetFileSize Lib “kernel32“ Alias “GetCompressedFileSizeA“ (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long
Private Sub Command1_Click()
Dim a
a = GetFileSize(“c:\1.zip“, ByVal 0&) ’文件c:\1.zip 根据情况修改
MsgBox a
End Sub
2、VB自带的FileLen(filename),推荐此方式
Private Sub Command1_Click()
a = FileLen(“c:\1.zip“)
MsgBox a
End Sub
3、open打开你文件的方法:
Private Sub Command1_Click()
Open “c:\1.zip“ For Input As #1
a = LOF(1)
Close #1
MsgBox a
End Sub
4、还有FSO方法,必须引用FSO组件同时电脑必须支持FSO组件。
建议还是选择第2种方法,简单高效。

如何获取文件的大小


一、通过 CFile 类的成员函数 GetLength 获取文件大小;二、通过 CFileFind 类的成员函数 GetLength 获取文件大小;下面详细说明这两种方法:一、CFile 类1、通过 Open 成员函数打开文件;2、通过 GetLength 成员函数获取文件大小;3、通过 Close 关闭文件。CFile f; CString str;f.Open(“e:\test1.wav“,CFile::modeRead|CFile::shareDenyNone); str.Format(“File size : %d“,f.GetLength()); f.Close();MessageBox(str);二、CFileFind 类1、通过 FindFile 开始查找文件;2、通过 FindNextFile 获取文件信息;3、通过 GetLength 获取文件大小;4、通过 Close 关闭查找。CFileFind finder; CString str;finder.FindFile(“e:\test1.wav“); finder.FindNextFile(); str.Format(“File size : %d“,finder.GetLength()); finder.Close();MessageBox(str); 以上是 MFC 的方法,下面是 SDK 方法:一、通过 GetFileSize API 函数获取文件大小;HANDLE hFile; DWORD dwFileSize = 0; char szData;hFile = CreateFile(“e:\test1.wav“,GENERIC_READ,FILE_SHARE_READ,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);dwFileSize = GetFileSize(hFile,NULL);CloseHandle(hFile);sprintf(szData,“File Size : %d“,dwFileSize);MessageBox(NULL,szData,“FileSize“,MB_ICONINFORMATION); 二、通过 FindFirstFile 和 WIN32_FIND_DATA 方法获取文件大小;LPWIN32_FIND_DATA lpFindFileData; HANDLE hFindFile; char szData;lpFindFileData = new WIN32_FIND_DATA;hFindFile = FindFirstFile(“e:\test1.wav“,lpFindFileData); FindNextFile(hFindFile,lpFindFileData); MessageBox(NULL,szData,“FileSize“,MB_ICONINFORMATION);delete lpFindFileData;说明:以上代码都没有检查函数返回值,读者在实际编写程序时应该检查文件打开是否成功。另外,CFile 类在实现时,是从文件头移动到文件尾,而不是用 GetFileSize API 函数实现的,有兴趣的朋友可以看看MFC源代码。体验新版博客
-filesize