如何获得文件大小(最好兼容Ansi C的)

NsKen 2000-09-13 12:22:00
如何获得文件大小(最好兼容Ansi C的)
请高手指教
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
early 2000-09-13
  • 打赏
  • 举报
回复
你好
使用fstat函数,这是比较好的方法。你在VC下的话用_fstat

这样使用
int hFile=open("yourfile",_O_RDONLY);
struct stat sbuf;
fstat(hFile,&sbuf);
cout<<"file size is"<<sbuf.st_size<<endl;
close(hFile);
SCUM 2000-09-13
  • 打赏
  • 举报
回复
1、以 binary 方式打开文件
2、移动文件指针到文件尾
3、获取当前位置 ( 用 ftell() ), 此值即为精确的文件长度。
比如:
FILE * file_ptr;
long file_size;

file_ptr = fopen( "filename", "rb" );
fseek( file_ptr, 0L, SEEK_END );
file_size = ftell( file_ptr );

file_size 即为文件长度



llt 2000-09-13
  • 打赏
  • 举报
回复
我记得fstat函数是按ANSI C标准定义的,可用于windows、unix系统。

头文件:#include <sys\stat.h>
原型:int fstat(int handle, struct stat * statbuf);
说明:fstat函数在stat结构中存储与handle相连的打开文件或目录的信息,参数statbuf指向stat结构,该结构中st_size域表示打开文件的大小(字节数)。
返回值:成功为0;出错为-1。

使用:
......
struct stat statbuf;
FILE *ff;
........
ff = fopen("filename.file","w+");
..........
fstat(fileno(ff),&statbuf);
printf("SIze of file in bytes:%ld\n",statbuf.st_size);
........
Holly 2000-09-13
  • 打赏
  • 举报
回复
Sorry!
fh1 = _open( "D:\Holly\libtest\readme.txt", _O_RDONLY );
中的文件路径中的'\'应用'\\',你换成一个你的文件名即可!
Holly 2000-09-13
  • 打赏
  • 举报
回复
示例:
int fh1;
long fsize;
fh1 = _open( "D:\Holly\libtest\readme.txt", _O_RDONLY );
if( fh1 == -1 )
perror( "open failed on input file" );
else
{
printf( "open succeeded on input file\n" );
//取得大小!
fsize = _lseek( fh1, 0, SEEK_END );
_close( fh1 );
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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