免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2776 | 回复: 5
打印 上一主题 下一主题

如何在程序中判断一个文件的大小 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-22 17:34 |只看该作者 |倒序浏览
要读写文件,但是当文件过大的时候,就不往里写了
请问如何在程序中判断一个文件的大小呢
有什么标准函数吗

论坛徽章:
0
2 [报告]
发表于 2005-11-22 18:51 |只看该作者
使用文件描述符。
使用lseek(),可以返回文件大小。
使用, man lseek 察看该函数的参数。原理就是从文件未尾开始,偏移量为0。返回就是文件的大小了。字节数。

fd = open(filename, mode);

len = lseek(fd, 0, SEEK_END);

使用文件指针FILE *file.
char ch[1];
unsigned long len = 0;
file = fopen(filename,mode);
if(file==NULL)
{}

while((fread(ch,file,1,1, file)==1) && !foef(file))len++;
.
.
.
.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-11-22 19:12 |只看该作者

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <unistd.h>

  6. int main()
  7. {
  8.     int fd;
  9.     struct stat st;

  10.     if((fd=open("./t",O_WRONLY|O_CREAT|O_TRUNC,666))==0)
  11.     {
  12.         perror("open");
  13.         return -1;
  14.     }
  15.     if(fstat(fd,&st)<0)
  16.     {
  17.         perror("fstat");
  18.         return -2;
  19.     }
  20.     printf("create :%lun",st.st_size);

  21.     if(write(fd,"123",4)!=4)
  22.     {
  23.         perror("write");
  24.         return -3;
  25.     }
  26.     if(fstat(fd,&st)<0)
  27.     {
  28.         perror("fstat");
  29.         return -4;
  30.     }
  31.     printf("after write :%lun",st.st_size);
  32.     close(fd);
  33.     return 0;

  34. }
复制代码

这是我刚才在Linux 2.6内核 下做的实验.fstat 肯定可以满足你的要求.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2005-11-23 13:31 |只看该作者
得看什么情况。
如果文件处于打开的情况,就用 ftell 或者 fstat,方便些。
如果文件还没有打开,就用 stat,这样就不用打开了。

论坛徽章:
0
5 [报告]
发表于 2005-11-23 13:56 |只看该作者
3ks,已解决
谢谢楼上各位

论坛徽章:
0
6 [报告]
发表于 2005-11-24 00:20 |只看该作者
stat是标准方法,或者读取ls的输出也可
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP