2011-05-09 3 views
6

Я знаю, что могу использовать attributesOfItemAtPath, чтобы получить время и дату изменения файла между прочим ... но есть ли способ установить дату и время изменения файл?Как установить атрибутыOfItemAtPath (например, дата/время изменения) на iPhone

Я просмотрел How to set the modification time of a file programmatically?, но он, похоже, не применяется.

Причина, по которой я прошу, заключается в использовании http://allseeing-i.com/ASIHTTPRequest/ (как показано ниже) для получения файла ... однако временная метка не сохраняется так же, как время последней модификации на сервере. Я хочу использовать заголовок Last-Modified для установки даты/времени загруженного файла, чтобы я мог сохранить загруженное время в моей системе так же, как на сервере.

Мой код следующим образом:

ASIHTTPRequest *requestFeed = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:kGZipSQLURL]]; 
[requestFeed setNumberOfTimesToRetryOnTimeout:2]; 
[requestFeed setDownloadDestinationPath:librarySQLGZipPath]; 
[requestFeed setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy]; 
[requestFeed setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
[requestFeed setSecondsToCache:60*60*24*30]; 
[requestFeed setDownloadCache:[ASIDownloadCache sharedCache]]; 
[requestFeed startSynchronous]; 
NSString *lastModified = [[requestFeed responseHeaders] objectForKey:@"Last-Modified"]; 
NSLog(@"Last Modified: %@",lastModified); 

Таким образом, строка lastModified имеет штамп даты/времени. Есть ли способ убедиться, что файл с librarySQLGZipPath теперь будет установлен на дату/время в lastModified? Используя текущий метод, файл librarySQLGZipPath содержит время его загрузки, которое для меня неверно.

Спасибо!

Янн

EDIT СПУСТЯ:

Потому что я хотел красиво положить на этой странице, как сделать код для этого и по-прежнему хотел дать Стивен Крамер кредит для ответа я сейчас буду отредактируйте вопрос с ответом, который я получил с помощью кода:

тогда как NSDateFromRFC1123 - это программа, которая находится здесь: http://blog.mro.name/2009/08/nsdateformatter-http-header/ (с некоторыми настройками), чтобы изменить строку заголовка Last-Modified в объект NSDate:

NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[self NSDateFromRFC1123:lastModified] ,NSFileModificationDate, nil]; 
NSError *errorFile; 
if ([NSFileManager defaultManager] setAttributes:attrs ofItemAtPath:librarySQLGZipPath error: &errorFile]) 
{ 
NSLog(@"Set timestamp of file"); 
} 
else { 
NSLog(@"COULD NOT set timestamp of file"); 
} 

Большое спасибо Стивен!

ответ

9

Использование -[NSFileManager setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error

+0

Ааа .. что-то вроде http://stackoverflow.com/questions/5791148/set-date-modified-of-files-in-cocoa (это не удалось в поиске, потому что я положите в iPhone) Спасибо, что указали мне в правильном направлении. Checkmark и +1 – Jann

+0

Да, это похоже на билет ;-) –

+0

Спасибо, мне это помогло. –