2011-05-09 17 views
6

attributesOfItemAtPath dosyasını başka şeylerin yanı sıra değişiklik zamanını/tarihini almak için kullanabileceğimi biliyorum ... ancak değişiklik tarihini/saatini ayarlamanın bir yolu var mı bir dosya?özniteliklerOfItemAtPath (modifikasyon tarihi/saati gibi) nasıl ayarlanır

How to set the modification time of a file programmatically?'a baktım ama uygulanmıyor gibi görünüyor.

Sormamın nedeni dosya almak için http://allseeing-i.com/ASIHTTPRequest/ (aşağıdaki gibi) kullanıyorum ... ancak zaman damgası sunucudaki Son Değiştirme Zamanı ile aynı tutulmuyor. İndirilen dosyanın tarihini/saatini ayarlamak için Last-Modified başlığını kullanmak istiyorum; böylece indirilen zamanı sistemimde olduğu gibi sistemimde saklayabilirim.

Kodum şu:

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

Yani, dize lastModified zaman/tarih damgası tutar. librarySQLGZipPath adresindeki dosyanın şimdi lastModified'da tarih/saat olarak ayarlanmasının sağlanmasının bir yolu var mı? Geçerli yöntemi kullanarak, librarySQLGZipPath dosyası, indirildiği süreyi saklı tutar.

Teşekkürler!

DÜZENLEME SONRA

Jann:

Bunun için kod nasıl güzel bu sayfada koymak istedim ve hala şimdi de duyuyorum cevaplanması için Steven Kramer kredi vermek istediğim için soruyu cevabı kullanarak aldığım kodu kullanıyorum:

NSDateFromRFC1123 burada bulunan bir yordamdır: http://blog.mro.name/2009/08/nsdateformatter-http-header/ (bazı ayarlamalar ile) Last-Modified başlık dizesini bir NSDate nesnesine dönüştürmek için:

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

Çok teşekkürler Steven!

cevap

9

Kullanım -[NSFileManager setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error

+0

Ahh .. http://stackoverflow.com/questions/5791148/set-date-modified-of-files-in-cocoa gibi bir şey (Bu i cos aramada gelmedi iPhone'a koy) Bana doğru yönde işaret ettiğin için teşekkürler. Onay işareti ve +1 – Jann

+0

Evet, bu sadece bir bilet gibi görünüyor ;-) –

+0

Teşekkürler, bu bana yardımcı oldu. –