如何在iPhone上设置attributesOfItemAtPath(例如修改日期/时间)

时间:2011-05-09 15:18:01

标签: iphone sdk asihttprequest last-modified

我知道我可以使用attributesOfItemAtPath来修改文件的修改时间/日期......但是有没有办法设置文件的修改日期/时间?

我看过How to set the modification time of a file programmatically?,但似乎并不适用。

我问的原因是我使用http://allseeing-i.com/ASIHTTPRequest/(如下所示)来获取文件...但是时间戳与服务器上的Last-Modified时间不一致。我想使用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保存下载时间,这对我来说无效。

谢谢!

Jann

以后编辑:

因为我想很好地在这个页面上如何为此做代码,并且仍然希望Steven Kramer能够回答这个问题我现在要用我使用代码的答案来编辑问题:

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");
}

非常感谢史蒂文!

1 个答案:

答案 0 :(得分:9)

使用-[NSFileManager setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error