C得到文件的大小

先用fopen打开文件,然后把文件指针指向文件尾.
再用ftell获得文件指针当前位置(即文件长度).

源代码:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{
FILE* fp = NULL;
int nFileLen = 0;

fp = fopen("c:/Test.txt", "rb");

if (fp == NULL)
{
cout << "can't open file" << endl;
return 0;
}

fseek(fp,0,SEEK_END); //定位到文件末
nFileLen = ftell(fp); //文件长度

cout << "file len = " << nFileLen << endl;
return 0;
}

可以用 stat (win 下 _stat)函数直接得文件尺寸。
man 2 stat

1.MFC中的方法:(C++)

CFileStatus status;
CFile::GetStatus("D:\\test.txt",status);
long lSizeOfFile;
lSizeOfFile = status.m_size;

lSizeOfFile的值就是D:\\test.txt文件的大小

2.标准C获得文件大小的5种方法
(注意:"__FILE__"指的是当前文件,你可以改为有效路径的目标文件,比如"D:\\test.txt")
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
}

#include "stdafx.h"
#include "stdio.h"
#include <sys/stat.h>
#include <io.h>
#include <FCNTL.H>

int getfilesize()
{
int iresult;
struct _stat buf;
iresult = _stat(__FILE__,&buf);
if(iresult == 0)
{
return buf.st_size;
}
return NULL;
}

int getfilesize01()
{
int fp;
fp=_open(__FILE__,_O_RDONLY);
if(fp==-1)
return NULL;
return _filelength(fp);
//return NULL;
}

int getfilesize02()
{
int fp;
fp=_open(__FILE__,_O_RDONLY);
if(fp==-1)
return NULL;
return _lseek(fp,0,SEEK_END);
//return NULL;
}

int getfilesize03()
{
int fp;
fp=_open(__FILE__,_O_RDONLY);
if(fp==-1)
return NULL;
return _lseek(fp,0,SEEK_END);
//return NULL;
}

int getfilesize04()
{
FILE *fp;
if((fp=fopen(__FILE__,"r"))==NULL)
return 0;
fseek(fp,0,SEEK_END);
return ftell(fp); //return NULL;
}

int getfilesize05()
{
FILE *fp;
char str[1];
if((fp=fopen(__FILE__,"rb"))==NULL)
return 0;
for(int i = 0;!feof(fp);i++)
{
fread(&str,1,1,fp);
}
return i - 1; //return NULL;
}

int main(int argc, char* argv[])
{
printf("getfilesize()=%d\n",getfilesize());
printf("getfilesize01()=%d\n",getfilesize01());
printf("getfilesize02()=%d\n",getfilesize02());
printf("getfilesize03()=%d\n",getfilesize03());
printf("getfilesize04()=%d\n",getfilesize04());
printf("getfilesize05()=%d\n",getfilesize05());
return 0;
}

时间: 2024-10-28 06:21:00

C得到文件的大小的相关文章

Linux下查看指定文件夹和文件的大小

df命令:查看目前所有文件系统的可用空间及使用情况 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力 代码如下: df -lh 参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB.MB 等易读的格式. 上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点.我们可以看到 /dev/sda1 这个分割区被挂在根目录下. 接下来的四个字段 Size.Used.Avail.及

如何用javascript控制上传文件的大小?

javascript|控制|上传 如何用javascript控制上传文件的大小? --------本文讲的是用javascript和在IE下Image的一些属性如(fileSize,fileUpdatedDate)等控制上传文件的大小.   <form   name=Myform  >     <input   type=file   name=photo><br/>     <input   type=submit   value=submit></

获取文件夹大小(PHP函数)

函数 <?php     // 获取文件夹大小    function getDirSize($dir)    {         $handle = opendir($dir);        while (false!==($FolderOrFile = readdir($handle)))        {             if($FolderOrFile != "." && $FolderOrFile != "..")     

PHP获取文件夹大小函数用法实例

  本文实例讲述了PHP获取文件夹大小函数用法.分享给大家供大家参考.具体如下: ? // 获取文件夹大小 function getDirSize($dir) { $handle = opendir($dir); while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { if(is_dir("

不删文字轻松减小Word文件的大小

不删文字轻松减小Word文件的大小,其实方法很简单,首先利用Word生成的文档,每页在20KB左右,在用记事本生成文档,相同的内容只有1KB左右,能让Word也减减肥吗?其实我们可以采用一些行之有效的方法来减小Word文档的文件大小. 1.取消快速保存当文件打开时,使用快速保存比使用完全保存需要更多的空间.可以在"工具→选项"命令中选择"保存"选项卡,取消"允许快速保存"复选框即可. 2.文件另存Word在保存DOC文件时,只把后来修改的信息存入

PHP实现格式化文件数据大小显示的方法

 这篇文章主要介绍了PHP实现格式化文件数据大小显示的方法,通过一个自定义函数实现针对文件大小的精确格式化,具有一定的参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP实现格式化文件数据大小显示的方法.分享给大家供大家参考.具体分析如下: 有时候我们需要在网页上显示某个文件的大小,或者是其它数据的大小数字. 这个数字往往从跨度很大,如果以B为单位的话可能是个位,如果1G则长达1073741824的数字,这个时候我们就需要根据大小来格式化,比如小于1K则以B为单位显示,小于1M则以K

酷盘是否限制单个文件的大小

  酷盘不限制单个文件的大小,可以上传任何文件. 注:由于浏览器和Flash本身的性能限制,使用浏览器最大可以上传2GB的文件.推荐使用酷盘客户端上传文件.

Outlook 删除或存档邮件后,为什么数据文件仍然大小不变?

Outlook 删除或存档邮件后,为什么数据文件仍然大小不变. 原因分析: 原来,存档时依然会保留原来的文件结构,需要进行压缩才能释放这部分空间.而压缩则通常在计算机空闲且 Outlook 仍在运行时才在后台自动运行.所以您无法立竿见影看到数据文件变小. 解决方案: 您可以对数据文件进行手动压缩,立即释放空间. Outlook 2010 情况下: 打开"文件>信息",按一下"账户设置"按钮,选择"账户设置". 图一 切换到"数据文

快速知晓Win8.1中WinSxS文件夹大小有绝招

  很多的系统用户会觉得Win8.1系统很冗余,说起造成繁冗的原因我们便不得不说到这个WinSxS特殊文件夹,存储大量系统系统备份.更新补丁备份.随着时间的推移,WinSxS也成为系统盘最大的文件夹. 在WinSxS文件夹中,主要由三部分组成:1.与Windows共享;2.备份和已禁用的功能;3.缓存和临时数据.对于普通用户来说,最关心的是WinSxS文件夹为何持续变大?实际上,WinSxS文件夹具体功能为组件存储,里面存储了Windows重要组件功能,例如大家熟悉的C:Windowssyste