21xrx.com
2024-06-02 23:03:17 Sunday
登录
文章检索 我的文章 写文章
C++如何获取文件的时间信息
2023-07-04 23:01:36 深夜i     --     --
C++ 获取 文件 时间信息

C++作为一种高度灵活、可扩展的编程语言,拥有许多强大的文件操作能力。其中一个常见的操作就是获取文件的时间信息,包括创建时间、最后修改时间和最后访问时间等。本文将介绍如何使用C++获取文件的时间信息。

在C++中,获取文件时间信息的函数主要是以下三种:

1. GetFileTime函数

GetFileTime函数可以获取文件的创建时间、最后修改时间和最后访问时间等信息,并以FILETIME结构体返回。该函数需要两个参数,第一个参数是文件的句柄,第二个参数是指向包含三个FILETIME结构体的指针。以下是使用GetFileTime函数获取文件时间信息的示例代码:


#include <Windows.h>

int main()

{

  HANDLE fileHandle = CreateFile(L"C:\\test.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

  if (fileHandle == INVALID_HANDLE_VALUE)

  

    return -1;

  

  FILETIME createFileTime;

  FILETIME lastAccessFileTime;

  FILETIME lastWriteFileTime;

  if (!GetFileTime(fileHandle, &createFileTime, &lastAccessFileTime, &lastWriteFileTime))

  

    return -1;

  

  CloseHandle(fileHandle);

  return 0;

}

2. _wstat函数

_wstat函数可以获取文件的访问时间和修改时间等信息,并以结构体_stat返回。该函数需要两个参数,第一个参数是文件路径,第二个参数是指向_stat结构体的指针。以下是使用_wstat函数获取文件时间信息的示例代码:


#include <sys/stat.h>

#include <iostream>

int main()

{

  struct _stat buf;

  if (_wstat(L"C:\\test.txt", &buf) != 0)

  

    return -1;

  

  std::cout << "Last access time: " << ctime(&buf.st_atime) << std::endl;

  std::cout << "Last modify time: " << ctime(&buf.st_mtime) << std::endl;

  return 0;

}

3. GetFileInformationByHandle函数

GetFileInformationByHandle函数可以获取文件的创建时间、最后修改时间和最后访问时间等信息,并以BY_HANDLE_FILE_INFORMATION结构体返回。该函数需要两个参数,第一个参数是文件的句柄,第二个参数是指向BY_HANDLE_FILE_INFORMATION结构体的指针。以下是使用GetFileInformationByHandle函数获取文件时间信息的示例代码:


#include <Windows.h>

int main()

{

  HANDLE fileHandle = CreateFile(L"C:\\test.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

  if (fileHandle == INVALID_HANDLE_VALUE)

  

    return -1;

  

  BY_HANDLE_FILE_INFORMATION fileInfo;

  if (!GetFileInformationByHandle(fileHandle, &fileInfo))

  

    return -1;

  

  FILETIME createFileTime = fileInfo.ftCreationTime;

  FILETIME lastAccessFileTime = fileInfo.ftLastAccessTime;

  FILETIME lastWriteFileTime = fileInfo.ftLastWriteTime;

  CloseHandle(fileHandle);

  return 0;

}

综上所述,C++提供了多种方式来获取文件的时间信息。开发者可以根据实际需求选择适合的方法来获取文件时间信息,实现更多的文件操作功能。

  
  

评论区

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