檔案時間屬性擷取與修改

來源:互聯網
上載者:User

      檔案的時間屬性一般包括:建立時間、最後修改時間、最後訪問時間。一般的擷取方法是:“右鍵”滑鼠---->“屬性”。而對於時間的修改則不能隨意進行,尤其是建立時間。本文通過代碼實現對檔案時間屬性的擷取、修改。

1、檔案時間屬性擷取

以"123.doc”檔案為例(該檔案置於代碼同一路徑,下同),擷取其最後訪問時間,其他兩項時間屬性同理:

#include<iostream>#include<Windows.h>using namespace std;int main(){HANDLE hFile=CreateFile( "123.doc", // 檔案名稱指標       GENERIC_WRITE,// 訪問模式       FILE_SHARE_READ, // 共用模式       NULL, //安全屬性       OPEN_EXISTING, // 建立方式       FILE_ATTRIBUTE_NORMAL, // 檔案屬性       NULL // 指向待覆制屬性的檔案指標       );FILETIME createTime;FILETIME lastAccessTime;//本例擷取最後訪問時間,其他兩項同理FILETIME lastWriteTime;if(INVALID_HANDLE_VALUE!=hFile) {  if (GetFileTime(hFile,&createTime,&lastAccessTime,&lastWriteTime))  {   SYSTEMTIME st;   memset(&st,0x0,sizeof(st));   FileTimeToSystemTime(&lastAccessTime,&st);//將檔案時間格式轉換為系統時間格式(UTC格式),可以看到小時數比真實的小了8   TIME_ZONE_INFORMATION tz;   ::GetTimeZoneInformation(&tz);//擷取當地時區資訊   SYSTEMTIME localST;   ::SystemTimeToTzSpecificLocalTime(&tz,&st,&localST);//將UTC時間格式轉換為當地時間格式,因為中國是東8區,所以轉換時在小時上加了8(本函數轉換時自動加的)   printf("最後訪問時間為: %d年%d月%d日 %d:%d:%d\n",localST.wYear,localST.wMonth,localST.wDay,localST.wHour,localST.wMinute,localST.wSecond);  }} CloseHandle(hFile); return 0;}   

2、時間屬性的修改

         仍以“123.doc”為例,對檔案的建立時間進行修改。具體代碼如下:

#include<iostream>#include<Windows.h>using namespace std;BOOL SetFileTimeToNewCreateTime(HANDLE hFile,int year,int month,int day,int hour,int minute,int second,int DayofWeek/*星期:0-6*/,int Milliseconds/*毫秒值*/){  FILETIME ft;   SYSTEMTIME st;//根據已知資料創造st,即系統時間格式      st.wYear=year;   st.wMonth=month;   st.wDay=day;   st.wHour=hour;   st.wMinute=minute;   st.wSecond=second;   st.wDayOfWeek=DayofWeek;   st.wMilliseconds=Milliseconds;    SystemTimeToFileTime(&st, &ft);  // 轉化為檔案時間格式    BOOL  f = SetFileTime(hFile,                         &ft , //建立時間參數                           (LPFILETIME) NULL,//訪問時間(參數為NULL則為不修改)                           (LPFILETIME) NULL//最後修改時間(同上)                            );   return f;}int main(){HANDLE hFile=CreateFile( "123.doc", // 檔案名稱指標       GENERIC_WRITE,// 訪問模式       FILE_SHARE_READ, // 共用模式       NULL, //安全屬性       OPEN_EXISTING, // 建立方式       FILE_ATTRIBUTE_NORMAL, // 檔案屬性       NULL // 指向待覆制屬性的檔案指標       );if(SetFileTimeToNewCreateTime(2012,9,27,8,8,8,4/*星期*/,0))//注意:星期與日期相關!        printf("更改成功");else       printf("更改失敗!");CloseHandle(hFile);return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.