首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-03-09 
请教取得文件大小的这段函数,谢谢.新手请教,用BCB6这段函数如何写?谢谢.另外有没有其它好的函数取得文件大

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

热点排行