如何在程序中判断一个文件的大小

发布于 2022-09-30 08:19:18 字数 65 浏览 11 评论 0

要读写文件,但是当文件过大的时候,就不往里写了
请问如何在程序中判断一个文件的大小呢
有什么标准函数吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

沉溺在你眼里的海 2022-10-07 08:19:18

使用文件描述符。
使用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++;
.
.
.
.

罪#恶を代价 2022-10-07 08:19:18
  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 肯定可以满足你的要求.

心清如水 2022-10-07 08:19:18

得看什么情况。
如果文件处于打开的情况,就用 ftell 或者 fstat,方便些。
如果文件还没有打开,就用 stat,这样就不用打开了。

半夏半凉 2022-10-07 08:19:18

3ks,已解决
谢谢楼上各位

双手揣兜 2022-10-07 08:19:18

stat是标准方法,或者读取ls的输出也可

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文