2010-10-24 6 views
8

Come posso ottenere il tempo di creazione del file in Ruby su Windows?Come ottengo il tempo di creazione del file in Ruby su Windows?

File.ctime deve restituire il tempo di modifica.

dir /tc in cmd.exe restituisce il tempo di creazione con un mucchio di altre cose.

C'è un modo migliore di eseguirlo e analizzare?

+0

tempo di creazione del tempo di restituzione in php su Windows, è lo stesso con File.ctime di Ruby? – niteria

+0

Windows memorizza i tempi di creazione. I sistemi Unix no. Mac OS lo memorizza in metadati ma Ruby non può accedervi direttamente usando i metodi 'File'. –

risposta

10

Apparentemente, l'attributo di metadata "ctime" ("creazione" o "modifica") di un file è system dependent poiché alcuni sistemi (ad esempio Windows) memorizzano l'ora di creazione di un file (la "data di nascita") e altri (i sistemi Posix, ad esempio Linux) tracciano il tempo in cui è stato aggiornato l'ultima volta. Windows utilizza l'attributo ctime as the actual creation time, quindi è possibile utilizzare le varie funzioni ctime in Ruby.

La classe File ha metodi statici e un'istanza denominata ctime che restituire l'ultima volta modificato e File::Stat ha un metodo di istanza (che differisce di non rilevare le variazioni che si verificano).

File.ctime("foo.txt") # => Sun Oct 24 10:16:47 -0700 2010 (Time) 

f = File.new("foo.txt") 
f.ctime # => Will change if the file is replaced (deleted then created). 

fs = File::Stat.new("foo.txt") 
fs.ctime # => Will never change, regardless of any action on the file. 
+3

"ctime" è ** non ** il tempo di creazione su Linux ma l'inode o il tempo di cambio del file. Sarà aggiornato ogni volta che il file viene spostato, alterato, le autorizzazioni o il proprietario sono alterati. – svoop

Problemi correlati