C++ 文件按照修改日期排序代码
时间: 2024-03-20 16:14:08 浏览: 16
以下是C++实现文件按照修改日期排序的代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <ctime>
#include <sys/stat.h>
using namespace std;
// 定义一个结构体,保存文件名和修改时间
struct FileInfo {
string name;
time_t modifyTime;
};
// 比较函数,用于排序
bool cmp(const FileInfo& a, const FileInfo& b) {
return a.modifyTime > b.modifyTime;
}
int main() {
// 定义文件夹路径
string folderPath = "/path/to/folder";
// 打开文件夹
DIR* dir = opendir(folderPath.c_str());
if (dir == NULL) {
cout << "文件夹不存在!" << endl;
return 0;
}
// 读取文件夹中的文件名和修改时间
dirent* dp;
vector<FileInfo> fileInfos;
while ((dp = readdir(dir)) != NULL) {
if (dp->d_name[0] == '.') { // 忽略隐藏文件
continue;
}
string filePath = folderPath + "/" + dp->d_name;
struct stat s;
if (stat(filePath.c_str(), &s) == 0) {
time_t modifyTime = s.st_mtime;
fileInfos.push_back({dp->d_name, modifyTime});
}
}
closedir(dir);
// 按照修改时间排序
sort(fileInfos.begin(), fileInfos.end(), cmp);
// 输出排序结果
for (auto fileInfo : fileInfos) {
cout << fileInfo.name << " " << ctime(&fileInfo.modifyTime);
}
return 0;
}
```
需要注意的是,该代码使用了Unix系统中的stat函数获取文件的修改时间,因此只能在Unix/Linux系统下运行。如果是在Windows系统下运行,需要使用Windows API中的GetFileAttributes和FindFirstFile等函数获取文件的属性信息。