(C語言)修改檔案時間程式(建立時間、修改時間、訪問時間)
背景
在某些情況下,我們需要對檔案時間進行修改,在這裡主要和大家分享一下修改檔案建立時間、修改時間和訪問時間的程式,C語言編寫。
解決方案
我們主要呼叫Windows API,直接修改檔案時間為自己任意設定的時間。在Windows系統中,SetFileTime函式可以直接對檔案的時間屬性進行修改,詳細的API使用說明可以去Windows官網上檢視:
BOOL SetFileTime( HANDLEhFile, CONSTFILETIME*IpCreationTime,//檔案建立時間 CONSTFILETIME*IpLastAccessTime,//訪問時間 CONSTFILETIME*IpLastWriteTime//修改時間 );
實踐
首先,我們建立一個txt檔案:

新建txt文件
然後執行我們寫好的程式:

程式執行截圖
然後我們再看檔案的時間屬性

執行程式後的檔案時間
程式原始碼分享
#include <Windows.h> #include<stdio.h> #include <stdlib.h> #include <tchar.h> int main(int argc, char *argv[]) { //傳參格式:filetime.exe test.txt 2011-01-08 17:00:33 SYSTEMTIME spec_time; sscanf(argv[2], "%d-%d-%d", &spec_time.wYear, &spec_time.wMonth, &spec_time.wDay); sscanf(argv[3], "%d:%d:%d", &spec_time.wHour, &spec_time.wMinute , &spec_time.wSecond); spec_time.wDayOfWeek= 1; spec_time.wMilliseconds= 0; HANDLE hFile = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("Get file handle failed,error = %s\n", GetLastError()); return -1; } FILETIME ft, LocalFileTime; SystemTimeToFileTime(&spec_time, &ft); LocalFileTimeToFileTime(&ft, &LocalFileTime); if(SetFileTime(hFile, &LocalFileTime, &LocalFileTime, &LocalFileTime)) { printf("success\n"); } else { printf("fail\n"); } CloseHandle(hFile); return 0; }
下一篇文章我會分享一篇修改資料夾時間的程式,小朋友們可以提前嘗試一下!