2010-03-17 2 views
7

Я планировал написать код, логика которого была основана на проверке даты создания определенного файла в папке Документы моего приложения. Оказывается, когда я вызываю - [NSFileManager attributesOfItemAtPath: error:], NSFileCreationDate не является одним из предоставленных атрибутов.Определить дату создания файла на iPhone OS?

Невозможно ли найти дату создания файла?

Спасибо.

+1

Эй, Грег, прошло 2 года, как «принять приём? : D – memmons

+0

Честно говоря, я не знаю, исправил ли ваше решение мою проблему! (Я не могу больше помнить.) Проблема, с которой я столкнулась, - это не код для доступа к дате создания; это то, что дата создания просто не возвращалась как один из атрибутов файла. –

+0

LOL, мужик, ты крутой! – memmons

ответ

1

Согласно Apple's reference, NSFileCreationDate доступен в 2.0+:

NSFileCreationDate The key in a file attribute dictionary whose value indicates the file's creation date.

The corresponding value is an NSDate object.

Available in iPhone OS 2.0 and later.

Declared in NSFileManager.h.

+0

Я согласен, что это в документах ... но на практике, когда вы получаете атрибуты файлов и просматриваете их все, это не один из предоставленных атрибутов. (Я далеко от своего компьютера, иначе я бы перечислил их всех здесь: 11, дата создания не одна из них.) –

+1

Я должен добавить, что это так, когда я работаю на Simulator. Я не пробовал работать на самом телефоне. Я могу попробовать это позже сегодня вечером. –

+1

Bizarre. Атрибуты NSFileManagerOfItemAtPath: error: должен возвращать словарь со всеми этими: http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/doc/constant_group/File_Attribute_Keys - если его там нет, похоже, вам не повезло. Это обязательно должно быть. –

8

fileCreationDate действительно часть словаря. Вот метод, который получает переданный URI файла и захватывает некоторые атрибуты из файла:

- (NSDictionary *) attributesForFile:(NSURL *)anURI { 

// note: singleton is not thread-safe 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *aPath = [anURI path]; 

if (![fileManager fileExistsAtPath:aPath]) return nil; 

NSError *attributesRetrievalError = nil; 
NSDictionary *attributes = [fileManager attributesOfItemAtPath:aPath 
          error:&attributesRetrievalError]; 

if (!attributes) { 
    NSLog(@"Error for file at %@: %@", aPath, attributesRetrievalError); 
    return nil; 
} 

NSMutableDictionary *returnedDictionary = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys: 
     [attributes fileType], @"fileType", 
     [attributes fileModificationDate], @"fileModificationDate", 
     [attributes fileCreationDate], @"fileCreationDate", 
     [NSNumber numberWithUnsignedLongLong:[attributes fileSize]], @"fileSize", 
    nil]; 

return returnedDictionary; 
}
Смежные вопросы