您的位置:首页 > 其它

MFC中获取文件的属性(包括文件创建时间、修改时间、访问时间、文件大小等)

2014-01-03 21:11 666 查看
之前在写一个文件下载工具,我负责写的是服务端,客户端给定一个时间戳,然后服务端进行扫描符合当前时间戳的所有文件,但是随着测试发现一个问题就是获取大文件出现异常,由于考虑不周全,之前获取文件大小使用的方法是:

long GetFileSize(CString filePath)

{

 if (_stat(&st, filePath) == 0)

return 0;

return st.st_size;

}

上面这种方法只是用于小文件,当获取一个大文件的时候就应该用下面的方法了:

#include <sys/stat.h>

BOOL GetFileAttributes(struct _stati64 *st, CString filePath)

{
wchar_t  *wchar = (wchar_t *)malloc(sizeof(wchar_t) * 1024);  
MultiByteToWideChar( CP_ACP, 0, filePath,  strlen(filePath)+1, wchar, sizeof(wchar_t) * 1024/sizeof(wchar[0]) );  
if(0 != _wstati64(wchar, st))/*pFileName是文件的路径*/
{
free(wchar);
return FALSE;
}
free(wchar);
return TRUE; 

}

例如调用的时候:

struct  _stati64  st;

GetFileAttributes(&st, "C:\\123.txt");

下面来说一下:_stati64 这个结构体原型:

#if     _INTEGRAL_MAX_BITS >= 64

struct _stati64 {

        _dev_t st_dev;

        _ino_t st_ino;

        unsigned short st_mode;

        short st_nlink;

        short st_uid;

        short st_gid;

        _dev_t st_rdev;

        __int64 st_size;

        time_t st_atime;

        time_t st_mtime;

        time_t st_ctime;

        };

#endif

该结构体在STAT.H文件中定义的。重要的几个成员变量是文件大小:st_size;创建时间:st_ctime   修改时间:st_mtime  最近访问时间:st_atime  

好了,今天就将文件属性的获取以及获取大文件就介绍到这里,如果有什么不懂或者我哪里讲错了的请及时联系: 新浪邮箱:chao_song2011@sina.cn    不胜感激!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐