读书人

请问取得文件大小的这段函数,多谢

发布时间: 2012-03-09 16:54:57 作者: rapoo

请教取得文件大小的这段函数,谢谢.
新手请教,用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;
}
[解决办法]
关注一下
呵呵
大家的方法都很好
我就不凑热闹了

读书人网 >C++ Builder

热点推荐