请教取得文件大小的这段函数,谢谢.

yarong21cn 2007-03-24 09:52:13
新手请教,用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;
...全文
288 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimryo 2007-03-24
  • 打赏
  • 举报
回复
相应的函数应是GetFileSizeEx,取得大于4G文件的大小~
信念 2007-03-24
  • 打赏
  • 举报
回复
API函数GetFileSize:
double fsize=(double)::GetFileSize((void *)hFile,NULL);//hFile为文件句柄,返回值为字节数
huzhangyou 2007-03-24
  • 打赏
  • 举报
回复
关注一下
呵呵
大家的方法都很好
我就不凑热闹了
gel_ink 2007-03-24
  • 打赏
  • 举报
回复
__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;
}
我不懂电脑 2007-03-24
  • 打赏
  • 举报
回复
下面的方法可以跨平台。

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);

}

}
n27741 2007-03-24
  • 打赏
  • 举报
回复
int Handle = FileOpen(char *FileName,0); //以只读模式打开文件
int FileLen= FileSeek(Handle,0,2); //移动到文件尾巴,返回所移动的字节数

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧