C++ 文件及文件夹操作(二)
获取文件的创建时间,最后访问时间,最后修改时间,有时,程序需要知道文件的最后修改时间,以便获知是否被修改过
使用windows的API FindFirstFile,可以非常方便的做到,获得到的时间类型是 FILETIME
FILETIME 只是文件时间,我们要把它转换成系统时间,注意,系统时间有UTC和本地之分,本地系统时间就是你电脑里显示的时间,二UTC则比你电脑里的时间慢8个小时,因为,我们在东八区,而UTC是0时区的时间
直接调用FileTimeToSystemTime 函数,就可以把FILETIME 转换成UTC时间
如果想转成本地系统时间,则先要使用 FileTimeToLocalFileTime 函数,然后再使用 FileTimeToSystemTime
使用windows的API FindFirstFile,可以非常方便的做到,获得到的时间类型是 FILETIME
FILETIME 只是文件时间,我们要把它转换成系统时间,注意,系统时间有UTC和本地之分,本地系统时间就是你电脑里显示的时间,二UTC则比你电脑里的时间慢8个小时,因为,我们在东八区,而UTC是0时区的时间
直接调用FileTimeToSystemTime 函数,就可以把FILETIME 转换成UTC时间
如果想转成本地系统时间,则先要使用 FileTimeToLocalFileTime 函数,然后再使用 FileTimeToSystemTime
示例代码:
GetFileTimeInfoA(string strName) { WIN32_FIND_DATA filestruct; size_t size = strName.length(); wchar_t *buffer = new wchar_t[size+1]; MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) ); buffer[size] = 0; // 确保以 " " 结尾 HANDLE hf = FindFirstFile(buffer,&filestruct); delete buffer; SYSTEMTIME sysTime; FILETIME localft; FILETIME createTime = filestruct.ftCreationTime; FILETIME lastAccessTime = filestruct.ftLastAccessTime; FILETIME lastWriteTime = filestruct.ftLastWriteTime; // 将文件时间转成本地时间 FileTimeToLocalFileTime(&createTime, &localft); FileTimeToSystemTime(&localft,&sysTime); printf("创建时间(本地) (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d ", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); // 将文件时间转成UTC时间 比本地系统时间慢8个小时 FileTimeToSystemTime(&createTime,&sysTime); printf("创建时间(UTC) (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d ", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); FileTimeToLocalFileTime(&lastAccessTime, &localft); FileTimeToSystemTime(&localft,&sysTime); printf("最后访问时间 (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d ", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); FileTimeToLocalFileTime(&lastWriteTime, &localft); FileTimeToSystemTime(&localft,&sysTime); printf("最后修改时间 (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d ", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C/C++创建和删除文件夹操作(对单个文件夹进行操作)
- 下一篇: c++ 文件及文件夹操作(三)