Я знаю, что могу использовать attributesOfItemAtPath
, чтобы, помимо прочего, получить время / дату модификации файла ... но есть ли способ УСТАНОВИТЬ дату модификации / время файла?
Я просмотрел Как программно установить время модификации файла? , но, похоже, это не применимо.
Причина, по которой я спрашиваю, заключается в том, что я использую 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
содержит время его загрузки, что для меня неверно.
Спасибо!
Янн
РЕДАКТИРОВАТЬ ПОЗЖЕ:
Потому что я хотел красиво поместите на эту страницу, как сделать код для этого, и все же хотел бы отдать должное Стивену Крамеру за ответ. Теперь я собираюсь отредактировать вопрос с ответом, который я получил, используя код:
, тогда как 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");
}
Большое спасибо, Стивен!