2013-07-09 18 views
5

W węźle mogę uzyskać datę modyfikacji pliku przy użyciu standardowego obiektu stat file. Czy istnieje sposób, w jaki mogę również znaleźć datę jego utworzenia? W ogóle nie mogę znaleźć niczego w dokumentacji http://nodejs.org/api/fs.html#fs_class_fs_stats.Pobierz datę utworzenia pliku w węźle

+0

'util.inspect (statystyki)' powinien dać Ci informacje ... Co masz na wyjściu tego? – PSL

+0

3 wartości daty - atime, ctime i mtime, z których żadna nie jest czasem stworzonym (ctime jest zmienionym czasem) – wheresrhys

Odpowiedz

6

To, czy można uzyskać czas utworzenia pliku, zależy od systemu operacyjnego i systemu operacyjnego. Tradycyjny POSIX definiuje tylko ctime, które jest (raczej myląco) datą modyfikacji i-węzła, a nie datą utworzenia, o czym wspominali inni ludzie. Jednak w niektórych systemach operacyjnych można uzyskać st_birthtimespec lub st_birthtime, który jest prawdziwym czasem "tworzenia". Musisz sprawdzić sys/stat.h na swoim systemie operacyjnym, aby zobaczyć, co, jeśli w ogóle, jest dostępne.

Niestety, niezależnie od tego, czy można uzyskać dostęp do całej struktury statystyk z node.js, to inny czajnik. Ale przynajmniej możesz dowiedzieć się, czy twój system operacyjny nawet go obsługuje i stamtąd.

1

Jeśli korzystasz z systemu Linux, ta informacja nie jest dostępna (chociaż jest przechowywana w systemie plików Ext4). Tak więc fs.stat zwraca tylko wartości atime, ctime, mtime.

+1

ctime, zgodnie ze wszystkim innym, co przeczytałem, jest zmieniony w czasie, który jest podobny, chociaż nie do końca identyczny zmodyfikowany czas – wheresrhys

+1

Niestety, masz rację (myślałem, że 'ctime' dotyczy' czasu tworzenia'). Spróbuję jednak czegoś, ale usunę to, jeśli nie znajdę odpowiedzi. – Zbigniew

+1

Spójrz na to: [pobierz czas utworzenia pliku] (http://unix.stackexchange.com/questions/24441/get-file-created-creation-time) – Zbigniew

9

Jeśli ktoś potyka się to po tak długim czasie, od Węzła stosowania tego v0.12.0:

fs.stat(path, callback) 

Gdzie zwrotna ma dwa argumenty błądzić & statystyk. Obiekt statystyki ma właściwość

birthtime 

która jest datą utworzenia.

Link do dokumentacji węzeł api link

0

Używam Fedory i nie ma 'birthtime' pole w fs.stat wyniku. Ale może możesz spróbować użyć węzła child_process, aby wywołać ls - pełny czas. Przynajmniej na moim komputerze daje to poprawny wynik.

fs.stat wynik:

{ 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 czasie

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