请教取得文件大小的这段函数,谢谢.
新手请教,用BCB6这段函数如何写?谢谢.另外有没有其它好的函数取得文件大小?
function FileSizeEx(const FileName: string): Int64; //取得文件大小
{
返回文件FileName的大小,支持超大文件
}
var
Info: TWin32FindData;
Hnd: THandle;
begin
Result := -1;
Hnd := FindFirstFile(PChar(FileName), Info);
if (Hnd <> INVALID_HANDLE_VALUE) then
begin
Windows.FindClose(Hnd);
Int64Rec(Result).Lo := Info.nFileSizeLow;
Int64Rec(Result).Hi := Info.nFileSizeHigh;
end;
end;
[解决办法]
API函数GetFileSize:
double fsize=(double)::GetFileSize((void *)hFile,NULL);//hFile为文件句柄,返回值为字节数
[解决办法]
相应的函数应是GetFileSizeEx,取得大于4G文件的大小~
[解决办法]
int Handle = FileOpen(char *FileName,0); //以只读模式打开文件
int FileLen= FileSeek(Handle,0,2); //移动到文件尾巴,返回所移动的字节数
[解决办法]
下面的方法可以跨平台。
fseek函数与ftell函数综合应用:
分析:可以用fseek函数把位置指针移到文件尾,再用ftell函数获得这时位置指针距文件头的字节数,这个字节数就是文件的长度.
#include <stdio.h>
main()
{
FILE *fp;
char filename[80];
long length;
printf( "输入文件名: ");
gets(filename);
//以二进制读文件方式打开文件
fp=fopen(filename, "rb ");
if(fp==NULL)
printf( "file not found!\n ");
else
{
//把文件的位置指针移到文件尾
fseek(fp,OL,SEEK_END);
//获取文件长度;
length=ftell(fp);
printf( "该文件的长度为%1d字节\n ",length);
fclose(fp);
}
}
[解决办法]
__int64 FileSizeEx( const char * str)
{
WIN32_FIND_DATA info;
HANDLE hdl = FindFirstFile( str, & info);
if( INVALID_HANDLE_VALUE != hdl )
{
FindClose(hdl);
return ((__int64)info.nFileSizeLow) | (((__int64)info.nFileSizeHigh) < <32);
}
return -1;
}
[解决办法]
关注一下
呵呵
大家的方法都很好
我就不凑热闹了