2013-07-09 9 views
5

Nel nodo I è possibile ottenere la data di modifica di un file utilizzando l'oggetto stat standard del file. C'è un modo in cui posso anche trovare la sua data di creazione? Non riesco a trovare nulla nella documentazione http://nodejs.org/api/fs.html#fs_class_fs_stats.Ottieni data di creazione del file nel nodo

+0

'util.inspect (statistiche)' dovrebbe darvi le informazioni ... Che cosa si ottiene come output di questo? – PSL

+0

3 valori di data - atime, ctime e mtime, nessuno dei quali è il tempo creato (ctime è il tempo modificato) – wheresrhys

risposta

6

Se è possibile ottenere l'ora di creazione del file dipende dal sistema operativo e dal file system. Il POSIX tradizionale definisce solo ctime, che è (piuttosto confusamente), la data di modifica dell'inode, non la data di creazione, come altre persone hanno menzionato. Tuttavia, su alcuni sistemi operativi, puoi ottenere st_birthtimespec o st_birthtime che è un vero "creare" il tempo. Dovrai controllare sys/stat.h sul tuo sistema operativo host per vedere cosa è, se possibile, disponibile.

Sfortunatamente, se è possibile accedere all'intera struttura stat da node.js è un diverso tipo di pesce. Ma almeno puoi capire se il tuo sistema operativo lo supporta e andare da lì.

1

Se si utilizza Linux, questa informazione non è accessibile (sebbene sia archiviata nel file system Ext4). Pertanto, fs.stat restituisce solo i valori atime, ctime, mtime.

+1

ctime, secondo tutto il resto che ho letto, è cambiato il tempo, che è simile, anche se non del tutto identico a tempo modificato – wheresrhys

+1

Sfortunatamente, hai ragione (pensavo che 'ctime' fosse per' tempo di creazione'). Proverò un po 'di cose, però, lo cancellerò se non troverò risposta. – Zbigniew

+1

Dai un'occhiata a questo: [ottieni tempo di creazione del file] (http://unix.stackexchange.com/questions/24441/get-file-created-creation-time) – Zbigniew

9

Se qualcuno inciampa su questo dopo tutto questo tempo, come d'uso v0.12.0 Node questo:

fs.stat(path, callback) 

Dove callback ha due args errare & statistiche. oggetto Stats ha proprietà

birthtime 

che è la data di creazione.

link alla documentazione nodo api link

0

Sto usando Fedora e non c'è nessun campo 'birthtime' nel risultato fs.stat. Ma forse puoi provare a utilizzare child_process del nodo per chiamare ls --full-time. Almeno sulla mia macchina mi sta dando il risultato corretto.

risultato fs.stat:

{ dev: 64771, 
    mode: 33279, 
    nlink: 1, 
    uid: 1000, 
    gid: 1000, 
    rdev: 0, 
    blksize: 4096, 
    ino: 2098445, 
    size: 48523700, 
    blocks: 94776, 
    atime: Sat Jul 04 2015 19:01:29 GMT+1000 (AEST), 
    mtime: Thu Aug 22 2013 16:45:10 GMT+1000 (AEST), 
    ctime: Sat Jul 04 2015 19:01:29 GMT+1000 (AEST) } 

ls --full tempo

-rwxrwxrwx. 1 pahuang pahuang 22M 2013-06-23 17:51:08.000000000 +1000 test_media/processed/20130621.mkv