c语言如何获得文件的创建时间以及文件的大小?(头文件及所用的函数,最好有用法举例)

或者c++

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")
#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;
}

参考资料:http://zhidao.baidu.com/question/49650643.html?si=2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-09
获取创建时间有个例子你看一下:

#include <stdio.h>
#include <io.h>
#include <time.h>

void main( void )
{
struct _finddata_t c_file;
long hFile;

/* Find first .cpp file in current directory */
if( (hFile = _findfirst( "*.cpp", &c_file )) == -1L )
printf( "No *.cpp files in current directory!\n" );
else
{
printf( " %-12s %.24s time_write\n",c_file.name, ctime( &( c_file.time_write ) ) );
printf( " %-12s %.24s time_create\n",c_file.name, ctime( &( c_file.time_create) ) );
printf( " %-12s %.24s time_access\n",c_file.name, ctime( &( c_file.time_access) ) );
}
_findclose( hFile );
getchar();
}

没有直接的函数返回文件的大小。
我觉得最简单的函数大概是stat函数了。
struct stat sb;
stat(FileName, &sb);
//sb.st_size 就是文件的大小 (用到的头文件是 sys\stat.h)

参考资料:http://www.softwelt.com/Know/KnowDetail-4532324.html

第2个回答  2008-11-10
windows编程的话,可以用windows的api,如 泠月冰辰 所说。

否则,要看具体平台,提供的类似功能的接口了。本回答被提问者采纳
第3个回答  2008-11-09
调用WIN32 API,一切OK。。

windows.h

CreateFile
GetFileInformationByHandle
相似回答