修改文件创建日期,访问日期和修改日期

有时出于一些同步了或者其他什么乱七八糟的原因,我们需要修改一个文件的创建日期等内容,网上找了一下算法,记下来以备后用.

void CModifyBINDlg::OnButton1()
{
 // TODO: Add your control notification handler code here

//定义一个和文件信息兼容的结构,用于保存获取的信息
 typedef struct _FILE_INFO {
  TCHAR szFileTitle[128]; //文件的标题名
  DWORD dwFileAttributes; //文件的属性
  FILETIME ftCreationTime; //文件的创建时间
  FILETIME ftLastAccessTime; //文件的最后访问时间
  FILETIME ftLastWriteTime; //文件的最后修改时间
  DWORD nFileSizeHigh; //文件大小的高位双字
  DWORD nFileSizeLow; //文件大小的低位双字
  DWORD dwReserved0; //保留,为0
  DWORD dwReserved1; //保留,为0
 } FILE_INFO, * PFILE_INFO;

//获取文件的信息

 WIN32_FIND_DATA ffd ;
 HANDLE hFind = FindFirstFile(m_FileName,&ffd);

  FindClose(hFind); 

//保存文件的信息
 FILE_INFO FileInfo;
 memset(&FileInfo,0,sizeof(FILE_INFO));
 //将文件属性信息保存到FileInfo中备用
 strcpy(FileInfo.szFileTitle,ffd.cFileName);
 FileInfo.dwFileAttributes = ffd.dwFileAttributes;
 FileInfo.ftCreationTime = ffd.ftCreationTime;
 FileInfo.ftLastAccessTime = ffd.ftLastAccessTime;
 FileInfo.ftLastWriteTime = ffd.ftLastWriteTime;
 FileInfo.nFileSizeHigh = ffd.nFileSizeHigh;
 FileInfo.nFileSizeLow = ffd.nFileSizeLow;
 //修改文件的生成日期信息
 SYSTEMTIME time;
    FILETIME t_ft;
 FileTimeToSystemTime(&(ffd.ftCreationTime), &time);
 time.wYear = 2000;
 time.wMonth = 1;
 time.wDay = 1;
 time.wDayOfWeek = 6;
    SystemTimeToFileTime(&time, &t_ft);
 //把修改的日期写回文件
 FileInfo.ftCreationTime = t_ft;
 BOOL bResult ;
 CFile file(m_FileName,CFile::modeWrite|CFile::typeBinary);   //打开文件
 bResult = SetFileTime((HANDLE)file.m_hFile, //待写入的文件句柄
  &FileInfo.ftCreationTime, //文件的创建时间
  &FileInfo.ftLastAccessTime, //文件最近一次的访问时间
  &FileInfo.ftLastWriteTime); //文件最近一次的修改时间
 if(!bResult)
    {
        DWORD dwErr = GetLastError();
    }
 
 //SetFileAttributes();
 file.Close();       //关闭文件

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值