You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中获取文件创建日期并按其排序?求适用库指导

获取文件创建日期并排序的实现方案

常用库/框架(按编程语言分类)

  • Python:标准库os、datetime或pathlib(Python3.4+),无需额外安装
  • C++:C++17引入的<filesystem>标准库,原生支持文件操作
  • Java:java.nio.file包下的Files与BasicFileAttributes类
  • JavaScript(Node.js):内置fs模块,通过statSync方法获取文件属性

C++ <filesystem>库的具体实现

如果你用C++,<filesystem>是最直接的选择,以下是完整的实现步骤和代码:

核心步骤

  1. 遍历目标目录,筛选出普通文件
  2. 提取每个文件的创建时间与路径
  3. 按创建时间对文件列表排序

示例代码

#include <filesystem>
#include <vector>
#include <algorithm>
#include <iostream>

namespace fs = std::filesystem;

int main() {
    // 替换为你的目标目录路径
    fs::path target_dir = "./your_directory";

    if (!fs::exists(target_dir) || !fs::is_directory(target_dir)) {
        std::cerr << "目录不存在或无效" << std::endl;
        return 1;
    }

    // 存储文件路径与创建时间的配对
    std::vector<std::pair<fs::path, fs::file_time_type>> file_list;

    // 遍历目录下的普通文件
    for (const auto& entry : fs::directory_iterator(target_dir)) {
        if (entry.is_regular_file()) {
            try {
                auto create_time = entry.creation_time();
                file_list.emplace_back(entry.path(), create_time);
            } catch (const fs::filesystem_error& e) {
                std::cerr << "读取文件信息失败:" << e.what() << std::endl;
            }
        }
    }

    // 按创建时间升序排序(最早的文件在前)
    std::sort(file_list.begin(), file_list.end(),
        [](const auto& a, const auto& b) {
            return a.second < b.second;
        });

    // 输出排序结果
    std::cout << "按创建时间升序排列的文件:\n";
    for (const auto& file : file_list) {
        std::cout << file.first << "\n";
    }

    return 0;
}

编译注意事项

  • 需要启用C++17或更高版本:GCC加编译参数-std=c++17(GCC 8及以上无需额外链接库),Clang加-std=c++17 -lc++fs,MSVC直接支持。
  • 平台差异:creation_time()在Windows返回文件创建时间;Linux/macOS返回文件状态变更时间,若需真正的创建时间,macOS可通过系统API补充实现,Linux则依赖文件系统是否记录创建时间。

Python 快速实现方案(适合新手)

Python的语法更简洁,适合入门,以下是用pathlib的示例:

from pathlib import Path
import os

# 替换为你的目标目录
target_dir = Path("./your_directory")

if not target_dir.exists() or not target_dir.is_dir():
    print("目录不存在或无效")
    exit()

file_list = []
for item in target_dir.iterdir():
    if item.is_file():
        # 区分系统获取创建时间
        if os.name == 'nt':
            create_time = item.stat().st_ctime
        else:
            create_time = item.stat().st_birthtime
        file_list.append( (create_time, item) )

# 按创建时间升序排序
file_list.sort()

# 输出结果
print("按创建时间升序排列的文件:")
for _, path in file_list:
    print(path.name)

内容的提问来源于stack exchange,提问作者Kanella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:09:57