2010-10-24 15 views
8

¿Cómo puedo obtener la hora de creación del archivo en Ruby en Windows?¿Cómo obtengo la hora de creación del archivo en Ruby en Windows?

Se supone que File.ctime devuelve tiempo de cambio.

dir /tc en cmd.exe devuelve el tiempo de creación con muchos otros elementos.

¿Hay alguna otra manera mejor que ejecutarlo y analizarlo?

+0

filectime devuelve el tiempo de creación en php en windows, ¿es lo mismo con el archivo File.ctime de ruby? – niteria

+0

Windows almacena tiempos de creación. Los sistemas Unix no. Mac OS lo almacena en metainformación pero Ruby no puede acceder directamente usando los métodos 'File'. –

Respuesta

10

Aparentemente, el atributo de metadatos "ctime" ("creación" o "cambio") de un archivo es system dependent ya que algunos sistemas (p. Ej. Windows) almacenan el tiempo de creación de un archivo (su "fecha de nacimiento") y otros (sistemas Posix, por ejemplo, Linux) rastrean la hora en que se actualizó por última vez. Windows usa el atributo ctime as the actual creation time, por lo que puede usar las diversas funciones ctime en Ruby.

La clase File tiene métodos estáticos y de instancia con nombre ctime que devuelven la última vez modificado y File::Stat tiene un método de instancia (que se diferencia por no seguir los cambios que se producen).

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" es ** no ** el tiempo de creación en Linux pero el inodo o el archivo cambian el tiempo. Se actualizará cada vez que se mueva el archivo, se modifiquen los permisos o el propietario. – svoop

Cuestiones relacionadas