C++ 文件及文件夹操作(二)
2015-03-23 23:20
246 查看
获取文件的创建时间,最后访问时间,最后修改时间,有时,程序需要知道文件的最后修改时间,以便获知是否被修改过
使用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; // 确保以 '\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\n", 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\n", 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\n", 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\n", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); }
相关文章推荐
- [C++]文件/文件夹的创建和删除操作
- c++关于文件夹(文件)的相关操作_findfirst,_findnext和_findclose方法
- C++文件与文件夹操作(1)--判断文件和文件夹是否存在
- c++文件及文件夹操作(一)
- C++中读入一个文件夹下多个文件的数据操作(文件夹遍历)
- C / C++ 文件文件夹操作详细整理
- C++文件与文件夹操作(3)--文件与文件夹复制
- c++ 文件及文件夹操作(三)
- c++对文件进行操作之读取文件夹下面的图片名称
- C++文件与文件夹操作(2)--判断并筛选文件夹目录下特定后缀文件
- C/C++文件操作
- 获取文件夹文件(C++)
- C++ 文件路径操作相关函数、获取dll所在的路径
- (一一七)基本文件操作 -SDWebImage清除缓存 -文件夹的大小计算
- System.Diagnostics.Process.Start操作文件和文件夹(Unity3D)
- windows c++ 修改用户的文件夹操作权限
- 文件打开关闭与读写等基本操作 C++
- C/C++遍历文件夹和文件
- C++ 简单的文件操作_适合初学者
- C++下遍历文件夹,查找文件 _finddata_t _findfirst _findnext