【求助】C语言比较两个文件的创建时间,windows下

怎么用C语言比较出两个文件的创建时间谁先谁后,谢谢~!... 怎么用C语言比较出两个文件的创建时间谁先谁后,谢谢~! 展开
 我来答
cl65agm
2013-03-01 · TA获得超过190个赞
知道答主
回答量:96
采纳率:0%
帮助的人:63.4万
展开全部
//************************************
// Parameter: const wchar_t * pFn1 输入文件名1
// Parameter: const wchar_t * pFn2 输入文件名2
//************************************
static const int iEarlier = -1; // 文件1比文件2创建晚
static const int iLater = 1; // 文件1比文件2创建早
static const int iEqual = 0; // 创建时间相同(要注意的是,windows系统某些时候会延迟写文件,如果两个文件创建的间隔时间太短,
// 可能创建时间是一样的。此时文件上右键属性时,看到的时间也是一样的)
static const int iError = 2; //出错,无法判断
int CompareFileCreationTime(const wchar_t* pFn1, const wchar_t* pFn2)
{
if(NULL == pFn1 || NULL == pFn2)
{
return iError;
}
if(0 == wcscmp(pFn1, pFn2))
{
return iEqual;
}

//打开文件
HANDLE hFile1 = ::CreateFile(pFn1, FILE_READ_ATTRIBUTES, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
HANDLE hFile2 = ::CreateFile(pFn2, FILE_READ_ATTRIBUTES, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE == hFile1 || INVALID_HANDLE_VALUE == hFile2)
{
if(INVALID_HANDLE_VALUE != hFile1)
{
::CloseHandle(hFile1);
hFile1 = NULL;
}
if(INVALID_HANDLE_VALUE != hFile2)
{
::CloseHandle(hFile2);
hFile2 = NULL;
}
return iError;
}

//获取文件时间
FILETIME ftCreate1, ftCreate2, ft12, ft13, ft22, ft23;
BOOL bSuc = ::GetFileTime(hFile1, &ftCreate1, &ft12, &ft13);
bSuc &= ::GetFileTime(hFile2, &ftCreate2, &ft22, &ft23);
::CloseHandle(hFile1);
::CloseHandle(hFile2);
if(FALSE == bSuc)
{
return iError;
}

//先比较高位
if(ftCreate1.dwHighDateTime != ftCreate2.dwHighDateTime)
{
return (ftCreate1.dwHighDateTime > ftCreate2.dwHighDateTime ? iLater : iEarlier);
}
//再比较低位
if(ftCreate1.dwLowDateTime == ftCreate2.dwLowDateTime)
{
return iEqual;
}
else
{
return (ftCreate1.dwLowDateTime > ftCreate2.dwLowDateTime ? iLater : iEarlier);
}
}
342075847
2013-02-28 · TA获得超过189个赞
知道小有建树答主
回答量:81
采纳率:100%
帮助的人:71.4万
展开全部
stat()获取文件创建时间,并进行比较

如下:获取文件创建时间
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>

void main( void )
{
struct stat buf;
int result;

//获得文件状态信息
result =stat( "file.txt", &buf );

//显示文件状态信息

if( result == 0 )
cout<<"文件创建时间:"<<ctime(&buf.st_ctime);

}
追问
比如有buf1和buf2,输出这两个所代表文件的创建时间时,输出的是同一时间,不明白为什么。
追答
stat中的时间还有点差别,你得取你所需

参考 如下:http://blog.csdn.net/wh62592855/article/details/6271016
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式