Namespaces
Variants

std::filesystem:: last_write_time

From cppreference.net
Défini dans l'en-tête <filesystem>
(1) (depuis C++17)
(2) (depuis C++17)
void last_write_time ( const std:: filesystem :: path & p,
std:: filesystem :: file_time_type new_time ) ;
(3) (depuis C++17)
void last_write_time ( const std:: filesystem :: path & p,

std:: filesystem :: file_time_type new_time,

std:: error_code & ec ) noexcept ;
(4) (depuis C++17)
1,2) Retourne l'heure de la dernière modification de p , déterminée comme si en accédant au membre st_mtime de la structure POSIX stat (les liens symboliques sont suivis). La surcharge non-lancante retourne file_time_type :: min ( ) en cas d'erreurs.
3,4) Modifie l'heure de la dernière modification de p , comme avec la fonction POSIX futimens (les liens symboliques sont suivis).

Table des matières

Paramètres

p - chemin à examiner ou modifier
new_time - nouvelle heure de modification
ec - paramètre de sortie pour le rapport d'erreur dans la surcharge non-lancante

Valeur de retour

1,2) L'heure de la dernière modification de p .
3,4) (aucun)

Exceptions

Toute surcharge non marquée noexcept peut lever std::bad_alloc si l'allocation de mémoire échoue.

1,3) Lance std::filesystem::filesystem_error en cas d'erreurs de l'API OS sous-jacente, construit avec p comme premier argument de chemin et le code d'erreur OS comme argument de code d'erreur.
2,4) Définit un paramètre std:: error_code & au code d'erreur de l'API du système d'exploitation si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Notes

Il n'est pas garanti qu'immédiatement après avoir défini l'heure d'écriture, la valeur retournée par (1,2) soit identique à celle passée en argument à (3,4) car la granularité temporelle du système de fichiers peut être plus fine que filesystem::file_time_type .

Exemple

#include <chrono>
#include <filesystem>
#include <format>
#include <fstream>
#include <iostream>
using namespace std::chrono_literals;
int main()
{
    auto p = std::filesystem::temp_directory_path() / "example.bin";
    std::ofstream{p.c_str()}.put('a'); // créer le fichier
    std::filesystem::file_time_type ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    // déplacer l'heure d'écriture du fichier d'une heure dans le futur
    std::filesystem::last_write_time(p, ftime + 1h);
    // relire depuis le système de fichiers
    ftime = std::filesystem::last_write_time(p);
    std::cout << std::format("File write time is {}\n", ftime);
    std::filesystem::remove(p);
}

Sortie possible :

File write time is 2023-09-04 19:33:24.702639224
File write time is 2023-09-04 20:33:24.702639224

Voir aussi

représente les valeurs temporelles des fichiers
(typedef)
obtient l'heure de la dernière modification des données du fichier auquel l'entrée de répertoire fait référence
(fonction membre publique de std::filesystem::directory_entry )