C ++: Come modificare 'creato' timestamp di un file?
-
26-09-2019 - |
Domanda
Ho bisogno di modificare il 'creato' (se esiste), 'modificato' e 'letta' timestamp di un file. Idealmente questo sarebbe una soluzione indipendente dalla piattaforma.
Ho guardato intorno alle librerie Boost, ma non riesco a vedere nulla di rilevante. Il più vicino che ho trovato per qualcosa di rilevante è questo per Windows.
chiunque aiutareCan? Grazie.
Soluzione
Non ho mai usato ma immagino che si sta cercando per le funzioni di attributo:
http: //www.boost .org / doc / librerie / 1_44_0 / librerie / filesystem / v2 / doc / reference.html # attributi funzioni
Ci sono anche funzioni per l'ultima modifica:
template <class Path> std::time_t last_write_time(const Path& p);
template <class Path> void last_write_time(const Path& p, const std::time_t new_time);
Altri suggerimenti
Un'altra , frammento di codice leggermente più semplice per Windows .
Utilizza la utime
funzione e utimbuf
struct. Il metodo è disponibile in Windows, ma si chiama con una sottolineatura di primo piano come _utime
.
Aggiornamento: utime
consente solo di cambiare il accesso e modifica volte (via utimbuf
di actime
e campi modtime
). Questo è più probabile, perché i file system molti stile Unix non registrano il creazione momento ovunque.
Non tutti i più diffusi supporto filesystem 'creato' e 'Accessed' timestamp: http: // it. wikipedia.org/wiki/Comparison_of_file_systems#Metadata
file system di Windows fanno, ma potrebbe non essere una buona idea di dipendere da loro adesso se avete bisogno di portabilità. Guardando a quel tavolo ottengo l'impressione che v'è una tendenza per aggiungere il supporto per le più recenti nel file system, però.