una programas modificar modificacion mac fecha creacion como carpeta cambiar archivo ios file date nsfilemanager

programas - iOS: ¿Cómo encuentras la fecha de creación de un archivo?



como cambiar la fecha de modificacion de una carpeta (8)

Estoy tratando de encontrar la fecha de creación (NO la fecha de modificación) de un archivo.

La fecha de creación no aparece en los atributos de un archivo, aunque sí la fecha de modificación.

Estoy usando este código ...

NSFileManager* fm = [NSFileManager defaultManager]; NSString* path = [PathHelpers pathInDocumentsFolderWithFilename:FILE_NAME]; NSDictionary* attrs = [fm attributesOfItemAtPath:path error:nil]; if (attrs != nil) { return (NSDate*)[attrs objectForKey: NSFileCreationDate]; } else { return nil; }

Esto siempre devuelve cero. Escribir ''po attrs'' en el depurador para obtener la lista de pares clave / valor en el NSDictionary devuelve lo siguiente ...

NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName = personal;
NSFileModificationDate = 2010-01-21 11:47:55 +0000;
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = ben;
NSFilePosixPermissions = 420;
NSFileReferenceCount = 1;
NSFileSize = 338;
NSFileSystemFileNumber = 2234;
NSFileSystemNumber = 42553324;
NSFileType = NSFileTypeRegular;

Sin fecha de creación .. bah ..

¿Alguien sabe otra forma de obtener la fecha de creación o simplemente no existe en iOS?


¿Se puede usar fstat64 para obtener el miembro st_birthtimespec de la estructura devuelta? Tendrá que crear un identificador de archivo C para el archivo y convertir el valor de la timespec en un NSDate , pero eso es mejor que nada.


Código de la versión Swift 3:

do { let fileAttributes = try FileManager.default.attributesOfItem(atPath: yourPathString) let modificationDate = fileAttributes[FileAttributeKey.modificationDate] as! Date print("Modification date: ", modificationDate) } catch let error { print("Error getting file modification attribute date: /(error.localizedDescription)") }


En Swift 4, si desea conocer la fecha de creación del archivo para un archivo específico en DocumentsDirectory, puede utilizar este método

func getfileCreatedDate(theFile: String) -> Date { var theCreationDate = Date() do{ let aFileAttributes = try FileManager.default.attributesOfItem(atPath: theFile) as [FileAttributeKey:Any] theCreationDate = aFileAttributes[FileAttributeKey.creationDate] as! Date } catch let theError as Error{ print("file not found /(theError)") } return theCreationDate }


Este código en realidad me devuelve la buena fecha de creación:

NSFileManager* fm = [NSFileManager defaultManager]; NSDictionary* attrs = [fm attributesOfItemAtPath:path error:nil]; if (attrs != nil) { NSDate *date = (NSDate*)[attrs objectForKey: NSFileCreationDate]; NSLog(@"Date Created: %@", [date description]); } else { NSLog(@"Not found"); }

¿Estás creando el archivo dentro de la aplicación? Tal vez ahí es donde está el problema.


Hay un mensaje especial fileCreationDate para eso en NSDictionary . Lo siguiente funciona para mí:

C objetivo:

NSDate *date = [attrs fileCreationDate];

Rápido:

let attrs = try NSFileManager.defaultManager().attributesOfItemAtPath(path) as NSDictionary attrs.fileCreationDate()


Respuesta actualizada para Swift 4 para extraer la fecha modificada ( .modifiedDate modificada) o creación (fecha de creación):

let file: URL = ... if let attributes = try? FileManager.default.attributesOfItem(atPath: file.path) as [FileAttributeKey: Any], let creationDate = attributes[FileAttributeKey.creationDate] as? Date { print(creationDate) }

  1. Usando un archivo que usted proporcione por adelantado a través de una URL, solicitará sus atributos. Si tiene éxito, se devuelve un diccionario de [FileAttributeKey: Any]
  2. Usando el diccionario del paso 1, luego saca la fecha de creación (o la modifica si lo prefiere) y usando el desenvuelto condicional, lo asigna a una fecha si tiene éxito
  3. Suponiendo que los dos primeros pasos sean exitosos, ahora tiene una fecha con la que puede trabajar

Versión de Swift 2.0:

do { let fileAttributes = try NSFileManager.defaultManager().attributesOfItemAtPath(YOURPATH) let creationDate = fileAttributes[NSFileCreationDate] as? NSDate let modificationDate = fileAttributes[NSFileModificationDate] as? NSDate print("creation date of file is", creationDate) print("modification date of file is", modificationDate) }catch let error as NSError { print("file not found:", error) }


NSDate *creationDate = nil; if ([fileManager fileExistsAtPath:filePath]) { NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:nil]; creationDate = attributes[NSFileCreationDate]; }

Está here