21xrx.com
2024-11-05 17:29:20 Tuesday
登录
文章检索 我的文章 写文章
C++ 获取文件最后修改时间
2023-07-10 13:15:18 深夜i     --     --
C++ 文件 最后修改时间

在C++编程语言中,获取文件的最后修改时间是一个常见的需求。获取文件最后修改时间可以用于检查文件是否被修改过,或者判断文件是否过期。

C++中可以使用Windows API的GetFileTime函数获取文件的创建时间、最后访问时间和最后修改时间。该函数的声明如下:


BOOL GetFileTime(

 HANDLE   hFile,

 LPFILETIME lpCreationTime,

 LPFILETIME lpLastAccessTime,

 LPFILETIME lpLastWriteTime

);

其中,参数hFile表示要获取时间信息的文件句柄;参数lpCreationTime、lpLastAccessTime和lpLastWriteTime分别表示要获取的创建时间、最后访问时间和最后修改时间。这些时间信息都是通过FILETIME结构来传递的。FILETIME结构包含两个DWORD成员,表示文件时间的UTC时间值;它们可以通过Windows API的FileTimeToSystemTime函数转换为本地时间值。

下面是一个获取文件最后修改时间的示例:


#include <windows.h>

#include <iostream>

using namespace std;

int main()

{

  HANDLE hFile = CreateFile(TEXT("test.txt"), GENERIC_READ, FILE_SHARE_READ, NULL,

    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

  if (hFile == INVALID_HANDLE_VALUE)

    cerr << "Error: Unable to open file." << endl;

    return 1;

  

  FILETIME ftCreate, ftAccess, ftWrite;

  if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)) {

    cerr << "Error: Unable to get file time." << endl;

    CloseHandle(hFile);

    return 1;

  }

  SYSTEMTIME stUTC, stLocal;

  FileTimeToSystemTime(&ftWrite, &stUTC);

  SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

  cout << "Last write time: ";

  cout << stLocal.wYear << "-" << stLocal.wMonth << "-" << stLocal.wDay << " ";

  cout << stLocal.wHour << ":" << stLocal.wMinute << ":" << stLocal.wSecond << endl;

  CloseHandle(hFile);

  return 0;

}

这个程序打开了一个名为test.txt的文件,并获取了它的最后修改时间。它首先使用CreateFile函数打开文件,获取文件句柄。然后使用GetFileTime函数获取文件的创建时间、最后访问时间和最后修改时间。接着,使用FileTimeToSystemTime函数将最后修改时间转换为本地时间值。最后,输出最后修改时间的年、月、日、时、分、秒。这个程序的输出如下:


Last write time: 2021-11-10 15:19:18

通过上面的示例,我们可以很容易地获取文件的最后修改时间,并用于自己的编程项目中。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复