职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1616|回复: 0

[转帖]文件时间设置与读取的代码

[复制链接]
zlyuanna 发表于 2006-11-23 16:41 | 显示全部楼层 |阅读模式
参阅了大量的源代码,加上自己的理解,才写出下面的代码,代码质量不高,拿出来让大家批评。

下面的设置文件时间的代码,花了我好长时间,我当时遇到了问题,在论坛求助,可是没人能够解决,我昏哦!今天我自己把问题解决了,这还要谢谢云舒给我的鼓励,非常感谢^_^
代码
//文件:SetFileTime.cpp
//时间:2006.7.13
//作者:猫降龙
//描述:可以设置文件属性里的时间,包括:创建时间、访问时间、修改时间

#include<stdio.h>
#include<windows.h>

int main(void)
{
   SYSTEMTIME st;             //系统时间
   FILETIME ft_localTime;
   FILETIME lpCreationTime;   //创建时间
   FILETIME lpLastAccessTime; //访问时间
   FILETIME lpLastWriteTime;  //修改时间
   HANDLE hFile;
   BOOL bResult;

   hFile=CreateFile(\"mxlong.txt\",GENERIC_WRITE,0,
               NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

   if(hFile==INVALID_HANDLE_VALUE)
   {
       printf(\"Open File failed!\\nErrorCode:%d\\n\",GetLastError());
CloseHandle(hFile);
return 1;
   }

   GetLocalTime(&st);
printf(\"SystemTime:%04d-%02d-%02d %02d:%02d:%02d\\n\",
     st.wYear ,st.wMonth ,st.wDay ,
  st.wHour ,st.wMinute ,st.wSecond);

   st.wYear=1982;
st.wMonth=7;
st.wDayOfWeek=1;    //此处的值不要更改
st.wDay=4;
st.wHour=(21+8)%24;
st.wMinute=30;
st.wSecond=0;
st.wMilliseconds=0; //此处的值不要更改

   SystemTimeToFileTime(&st,&ft_localTime);

printf(\"SystemTime:%04d-%02d-%02d %02d:%02d:%02d\\n\",
      st.wYear ,st.wMonth ,st.wDay ,
   st.wHour ,st.wMinute ,st.wSecond);

   FileTimeToLocalFileTime(&ft_localTime,&lpCreationTime);
   FileTimeToLocalFileTime(&ft_localTime,&lpLastAccessTime);
FileTimeToLocalFileTime(&ft_localTime,&lpLastWriteTime);
   bResult=SetFileTime(hFile,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime);

   if(bResult)
   {
       printf(\"File Time Set Succeed!\\n\");
CloseHandle(hFile);
return 0;
   }

   else
   {
       printf(\"File Time Set Failed!\\n%d\\n\",GetLastError());
       CloseHandle(hFile);
return 1;
   }
   CloseHandle(hFile);
   return 0;

getchar();
}



读取文件时间代码
代码
//文件:GetFileTime.cpp
//时间:2006.7.13
//作者:猫降龙
//描述:可以读取文件属性里的时间,包括:创建时间、访问时间、修改时间

#include<stdio.h>
#include<windows.h>

int main(void)
{
   SYSTEMTIME st_systemTime;
FILETIME ft_localTime;
FILETIME lpCreationTime;
FILETIME lpLastAccessTime;
FILETIME lpLastWriteTime;
HANDLE hFile;
long retval;

   hFile=CreateFile(\"mxlong.txt\",GENERIC_READ,0,
               0,OPEN_EXISTING,
      FILE_ATTRIBUTE_NORMAL,0);

   if(hFile==INVALID_HANDLE_VALUE)
   {
       printf(\"Open File failed!\\nErrorCode:%d\\n\",GetLastError());
CloseHandle(hFile);
return 1;
}

   retval=GetFileTime(hFile,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime);

   if(retval)
   {
       //CreationTime(创建时间)
       FileTimeToLocalFileTime(&lpCreationTime,&ft_localTime);
       FileTimeToSystemTime(&ft_localTime,&st_systemTime);

       printf(\"CreationTime:%04d-%02d-%02d %02d:%02d:%02d\\n\",
      st_systemTime.wYear ,st_systemTime.wMonth ,st_systemTime.wDay ,
   st_systemTime.wHour ,st_systemTime.wMinute ,st_systemTime.wSecond);

       //LastWriteTime(修改时间)
       FileTimeToLocalFileTime(&lpLastWriteTime,&ft_localTime);
       FileTimeToSystemTime(&ft_localTime,&st_systemTime);

       printf(\"LastWriteTime:%04d-%02d-%02d %02d:%02d:%02d\\n\",
      st_systemTime.wYear ,st_systemTime.wMonth ,st_systemTime.wDay ,
   st_systemTime.wHour ,st_systemTime.wMinute ,st_systemTime.wSecond);

       //LastAccessTime(访问时间)
       FileTimeToLocalFileTime(&lpLastAccessTime,&ft_localTime);
FileTimeToSystemTime(&ft_localTime,&st_systemTime);

       printf(\"LastAccessTime:%04d-%02d-%02d %02d:%02d:%02d\\n\",
      st_systemTime.wYear ,st_systemTime.wMonth ,st_systemTime.wDay ,
   st_systemTime.wHour ,st_systemTime.wMinute ,st_systemTime.wSecond);

CloseHandle(hFile);
return 0;
}
   CloseHandle(hFile);
   return 0;

getchar();
}
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-20 08:50 , Processed in 0.141454 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表