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

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

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    不胜感激!!!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值