【发布时间】:2012-03-07 15:01:40
【问题描述】:
我的文件夹包含音频和文本文件
我需要获取最后创建的文本文件和音频文件路径,而不需要在文件夹上循环或不使用可变数组并使用修改后的数据进行排序
任何想法
【问题讨论】:
-
这个文件夹可以有很多文件的性能
标签: iphone objective-c ipad
我的文件夹包含音频和文本文件
我需要获取最后创建的文本文件和音频文件路径,而不需要在文件夹上循环或不使用可变数组并使用修改后的数据进行排序
任何想法
【问题讨论】:
标签: iphone objective-c ipad
有两种解决方案:
循环的实现:
NSString *documentsDirectory = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] path];
NSArray *docFileList = [[NSFileManager defaultManager] subpathsAtPath:documentsDirectory];
NSEnumerator *docEnumerator = [docFileList objectEnumerator];
NSString *docFilePath;
NSDate *lastModifiedDate = [NSDate dateWithTimeIntervalSince1970:0];
NSString *lastModifiedFilePath = @"";
while ((docFilePath = [docEnumerator nextObject])) {
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:docFilePath];
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:fullPath error:nil];
NSDate currentModifiedDate = [fileAttributes fileModificationDate];
if (lastModifiedDate < fileModificationDate) {
fileModificationDate = lastModifiedDate;
lastModifiedFilePath = fullPath;
}
}
return lastModifiedFilePath;
【讨论】:
attributesOfItemAtPath 的文档即可。在这种情况下,使用[fileAttributes fileType]; 或更好,只需使用NSString 的pathExtension 检查文件名的最后一个组成部分。也请考虑投票并接受我的回答。
当您下载文件时,您需要管理自动生成的 .plist 文件以及最后一个值获取并证明最新下载文件名的另一个选项。
在这里展示一个教程。 以下代码用于下载音频文件并添加动态创建的 .plist
NSString *strAudioURL=@"Your sound ";
// check first locally exists or not
NSString *strPathToAudioCache=[NSString stringWithFormat:@"%@/%@",
[(NSArray*)NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],
AudioFolder];
NSDictionary *dOfAudios=[NSDictionary dictionaryWithContentsOfFile:strPathToAudioCache];
if([dOfAudios valueForKey:strAudioURL]) {
[APP_DEL initAndPlayMovie:[NSURL fileURLWithPath:[dOfAudios valueForKey:strAudioURL]] andViewController:self];
} else {
NSURL *audioURL = [NSURL URLWithString:strAudioURL];
NSString *strPathToDownload=[NSString stringWithFormat:@"%@/%@",[(NSArray*)NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],
[strAudioURL lastPathComponent]];
if(!self.rqstForAudio || [self.rqstForAudio isFinished]) {
self.rqstForAudio=[ASIHTTPRequest requestWithURL:audioURL];
[self.rqstForAudio setDelegate:self];
[self.rqstForAudio setAllowResumeForFileDownloads:YES];
[self.rqstForAudio setCachePolicy:ASIUseDefaultCachePolicy];
[self.rqstForAudio setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[self.rqstForAudio setDidFailSelector:@selector(failedToLoad:)];
[self.rqstForAudio setDidFinishSelector:@selector(finishedLoading:)];
[self.rqstForAudio setDownloadCache:[ASIDownloadCache sharedCache]];
[self.rqstForAudio setDownloadDestinationPath:strPathToDownload];
[self.rqstForAudio startAsynchronous];
}
}
【讨论】: