C++ 遍历文件目录下的图片 判断文件创建时间与系统时间的时间差单位秒
时间: 2023-12-09 16:02:50 浏览: 62
好的,可以使用以下步骤来实现:
1. 遍历文件目录下的图片,可以使用 dirent.h 头文件中的 dirent 和 DIR 结构体以及 opendir()、readdir() 和 closedir() 函数来实现。
2. 判断文件是否是图片,可以通过文件后缀名来判断,比如 .jpg、.png 等。
3. 获取文件的创建时间可以使用 stat() 函数,该函数可以返回文件的详细信息,包括创建时间和修改时间等。
4. 将文件的创建时间转换为时间戳,可以使用 mktime() 函数。
5. 获取系统当前时间可以使用 time() 函数。
6. 计算时间差可以使用 difftime() 函数。
下面是一个示例代码,可以实现上述功能:
```c++
#include <dirent.h>
#include <sys/stat.h>
#include <time.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool isImage(const string& filename) {
return filename.substr(filename.find_last_of(".") + 1) == "jpg"
|| filename.substr(filename.find_last_of(".") + 1) == "png";
}
int main() {
string dir_path = "/path/to/directory";
DIR* dir = opendir(dir_path.c_str());
if (!dir) {
cerr << "Failed to open directory." << endl;
return -1;
}
struct dirent* entry;
vector<string> image_files;
while ((entry = readdir(dir)) != nullptr) {
string filename = entry->d_name;
if (isImage(filename)) {
string filepath = dir_path + "/" + filename;
struct stat file_stat;
if (stat(filepath.c_str(), &file_stat) == 0) {
time_t file_time = file_stat.st_mtime;
time_t current_time = time(nullptr);
double time_diff = difftime(current_time, file_time);
cout << "File " << filename << " was created " << time_diff << " seconds ago." << endl;
}
}
}
closedir(dir);
return 0;
}
```
需要注意的是,该示例代码中的时间差是以秒为单位的。如果需要以其他时间单位表示,可以对结果进行相应的转换。
阅读全文