1.獲取文件路徑
獲取文件的路徑常用的方法:
1.通過NSFileManager:NSArray *supportDircts ?=?[fileManager URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask]茴厉,通過這方法獲取的是包含路徑url的數(shù)組(推薦使用url形式)蜓谋。
2.?通過NSSearchPathForDirectoriesInDomains:NSArray* supStrDirs = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true);通過這種方法獲取的是包含路徑的string形式的數(shù)組
3.獲取資源文件:NSURL *imgUrl = [[NSBundle mainBundle] URLForResource:@"imgName" withExtension:@"png"]
4.通過bookMark保存和獲取路徑的url,:
為啥使用bookMark:?bookmark can usually be used to re-create a URL to a file even in cases where the file was moved or renamed.
1.核心代碼:保存:
NSData* data = [url bookmarkDataWithOptions:NSURLBookmarkCreationSuitableForBookmarkFile includingResourceValuesForKeys:nil relativeToURL:nil error:&error];
[NSURL writeBookmarkData:data toURL:nil options:NSURLBookmarkCreationSuitableForBookmarkFile error:nil];
2.獲取URL
NSURL *url = [NSURL URLByResolvingBookmarkData:data options:NSURLBookmarkResolutionWithoutUI relativeToURL:nil bookmarkDataIsStale:&isStale error:&error];
2.獲取某文件下的文件信息
1.遍歷獲取通過url
//獲取帶有如下數(shù)組中的url屬性,NSDirectoryEnumerationSkipsHiddenFiles:跳過隱藏文件
NSArray *urlResouceKeys = @[NSURLIsDirectoryKey,NSURLIsPackageKey];
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtURL:url includingPropertiesForKeys:urlResouceKeys options:(NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:^BOOL(NSURL * _Nonnull url, NSError * _Nonnull error) {
? ? ? ? // Return YES if the enumeration should continue after the error.如需要當(dāng)發(fā)生錯(cuò)誤的時(shí)候停止遍歷直接返回NO
? ? ? ? return true;
? ? }];
//遍歷
? ? for (NSURL *surl in dirEnum) {
? ? ? ? NSNumber *isDir;//判斷是否是文件夾
//通過url獲取文件的屬性
? ? ? ? [surl getResourceValue:&isDir forKey:NSURLIsDirectoryKey error:nil];
? ? ? ? if ([isDir boolValue]) {
? ? ? ? ? ? NSString *localName;
? ? ? ? ? ? [surl getResourceValue:&localName forKey:NSURLLocalizedNameKey error:nil];
? ? ? ? ? ? NSNumber *isPackage;
? ? ? ? ? ? [surl getResourceValue:&isPackage forKey:NSURLIsPackageKey error:nil];
? ? ? ? ? ? if ([isPackage boolValue]) {
? ? ? ? ? ? ? ? NSLog(@"package at==%@",localName);
? ? ? ? ? ? }
? ? ? ? ? ? else{
? ? ? ? ? ? ? ? NSLog(@"dir at==%@",localName);
? ? ? ? ? ? }
? ? ? ? }
? ? }
2.遍歷獲取通過path(如下獲悉最近24小時(shí)內(nèi)修改過的文件)
NSString*pstr = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, true) firstObject];
? ? NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:(-60*60*24)];
? ? NSDirectoryEnumerator *enumeRator = [[NSFileManager defaultManager] enumeratorAtPath:pstr];
? ? for (NSString*path in enumeRator) {
? ? ? ? if ([[path pathExtension] isEqualToString:@"trfd"]) {
? ? ? ? ? ? // Don't enumerate this directory.
? ? ? ? ? ? [enumeRator skipDescendants];
? ? ? ? }else{
? ? ? ? ? ? NSDictionary *fileAttr = [enumeRator fileAttributes];//這個(gè)屬性只有通過path獲取才有,通過url形式的返回的是nil
? ? ? ? ? ? NSDate *lastModifyDate = [fileAttr objectForKey:NSFileModificationDate];
? ? ? ? ? ? if ([yesterday earlierDate:lastModifyDate] == yesterday) {
? ? ? ? ? ? ? ? NSLog(@"modifyed in 24h at:%@",path);
? ? ? ? ? ? }
? ? ? ? }
? ? }
3.直接獲取(一次性獲取)
NSURL *url = [NSURL fileURLWithPath:NSHomeDirectory()];
? ? NSArray *urlResouceKeys = @[NSURLCreationDateKey,NSURLLocalizedNameKey,NSURLLocalizedTypeDescriptionKey];
?NSArray *urls = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:url includingPropertiesForKeys:urlResouceKeys options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];