VC++ 获取文件属性创建时间、修改时间和访问时间
轉(zhuǎn)載:http://blog.sina.com.cn/s/blog_66bf8d8301014ikd.html
WIN32_FIND_DATA結(jié)構(gòu)
關(guān)于文件的全部屬性信息,總計(jì)有以下以下9 種:文件的標(biāo)題名、文件的屬性(只讀、存檔,隱藏等)、文件的創(chuàng)建時(shí)間、文件的最后訪問(wèn)時(shí)間、文件的最后修改時(shí)間、文件大小的高位雙字、文件大小的低位雙字、保留、保留。在這里只有文件標(biāo)題名和文件的長(zhǎng)度可以通過(guò)CFile類比較方便的獲得,而對(duì)于其他幾種屬性的獲取和設(shè)置就無(wú)能為力了。
在用findfirst()和findnext()函數(shù)去查找磁盤文件時(shí)經(jīng)常使用的一個(gè)數(shù)據(jù)結(jié)構(gòu)WIN32_FIND_DATA的成員變量里包含了以上所有的文件屬性,因此可以通過(guò)這個(gè)結(jié)構(gòu)作為獲取和更改文件屬性的手段。該結(jié)構(gòu)的內(nèi)容如下:
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; //文件屬性
FILETIME ftCreationTime; // 文件創(chuàng)建時(shí)間
FILETIME ftLastAccessTime; // 文件最后一次訪問(wèn)時(shí)間
FILETIME ftLastWriteTime; // 文件最后一次修改時(shí)間
DWORD nFileSizeHigh; // 文件長(zhǎng)度高32位
DWORD nFileSizeLow; // 文件長(zhǎng)度低32位
DWORD dwReserved0; // 系統(tǒng)保留
DWORD dwReserved1; // 系統(tǒng)保留
TCHAR cFileName[ MAX_PATH ]; // 長(zhǎng)文件名
TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
可以通過(guò)FindFirstFile()函數(shù)根據(jù)當(dāng)前的文件存放路徑查找該文件來(lái)把待操作文件的相關(guān)屬性讀取到WIN32_FIND_DATA結(jié)構(gòu)中去:
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile("c:\test.dat",&ffd);
在使用這個(gè)結(jié)構(gòu)時(shí)不能手工修改這個(gè)結(jié)構(gòu)中的任何數(shù)據(jù),結(jié)構(gòu)對(duì)于開發(fā)人員來(lái)說(shuō)只能作為一個(gè)只讀數(shù)據(jù),其所有的成員變量都會(huì)由系統(tǒng)完成填寫。
實(shí)例:
//--get the LastWriteTime of folder/files
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile(openedSourceDir,&ffd);
SYSTEMTIME stUTC, stLocal;
FileTimeToSystemTime(&(ffd.ftLastWriteTime), &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
myTime.Format("%d. %d %d, %d:%d", stLocal.wDay,stLocal.wMonth,stLocal.wYear,stLocal.wHour,stLocal.wMinute);
//--
d_ColorStatic.SetWindowText((LPCTSTR)myTime);
?
2.?獲取文件屬性創(chuàng)建時(shí)間、修改時(shí)間和訪問(wèn)時(shí)間
轉(zhuǎn)載:http://blog.csdn.net/awu999328/article/details/24470621
1 FILETIME ftCreate, ftModify, ftAccess; 2 CString strCreateTime, strModifyTime, strAccessTime; 3 CString strFilePath = _T(""); 4 5 HANDLE hFile = CreateFile(strFilePath, GENERIC_READ, // open for reading 6 FILE_SHARE_READ, // share for reading 7 NULL, // default security 8 OPEN_EXISTING, // existing file only 9 FILE_FLAG_BACKUP_SEMANTICS , // normal file 10 NULL); 11 12 SYSTEMTIME stLocal; 13 if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftModify)) 14 { 15 return ; 16 } 17 18 ZeroMemory(&stLocal, sizeof(SYSTEMTIME)); 19 FileTimeToSystemTime(&ftCreate, &stLocal); 20 strCreateTime.Format("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond); // 文件創(chuàng)建時(shí)間 21 ZeroMemory(&stLocal, sizeof(SYSTEMTIME)); 22 FileTimeToSystemTime(&ftModify, &stLocal); 23 strModifyTime.Format("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond); // 文件修改時(shí)間 24 ZeroMemory(&stLocal, sizeof(SYSTEMTIME)); 25 FileTimeToSystemTime(&ftAccess, &stLocal); 26 strAccessTime.Format("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond); // 文件訪問(wèn)時(shí)間?
這里的CreateFile只導(dǎo)致文件只能被只讀打開,不能有其他權(quán)限,最好用FindFile獲取創(chuàng)建,修改和訪問(wèn)時(shí)間
轉(zhuǎn)載于:https://www.cnblogs.com/chechen/p/5138604.html
總結(jié)
以上是生活随笔為你收集整理的VC++ 获取文件属性创建时间、修改时间和访问时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java Collection
- 下一篇: c++ 多线程编程