NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:pathStr]) {
NSError *error = nil;
// 这个方法只取一层子路径
NSArray *contents = [fileManager contentsOfDirectoryAtPath:pathStr error:&error];
for (NSString *str in contents) {
NSLog(@"%@", str);
}
// 这个方法和下面这个方法效果一样,都是取出递归到文件的所有文件(包括目录)路劲
// NSArray *arr = [fileManager subpathsAtPath:pathStr];
NSArray *arr = [fileManager subpathsOfDirectoryAtPath:pathStr error:nil];
for (NSString *str in arr) {
NSLog(@"%@", str);
}
// 如果要看bundle里的东西的话用这个路径URL
// NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
// 如果要用指定的其他的路径用这个方法
// NSURL *url = [NSURL fileURLWithPath:pathStr];
// NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:url
// includingPropertiesForKeys:@[NSURLNameKey, NSURLIsDirectoryKey]
// options:NSDirectoryEnumerationSkipsHiddenFiles
// errorHandler:^BOOL(NSURL *url, NSError *error)
// {
// if (error) {
// NSLog(@"[Error] %@ (%@)", error, url);
// return NO;
// }
//
// return YES;
// }];
//
// NSMutableArray *mutableFileURLs = [NSMutableArray array];
// for (NSURL *fileURL in enumerator) {
// NSString *filename;
// [fileURL getResourceValue:&filename forKey:NSURLNameKey error:nil];
//
// NSNumber *isDirectory;
// [fileURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];
//
// NSError *attrErr = nil;
// 注意这个地方.path是用来去掉file://协议头的,保留最纯洁的/开头的路径
// NSDictionary *dic = [fileManager attributesOfItemAtPath:fileURL.path error:&attrErr];
// if (attrErr) {
// NSLog(@"%@", attrErr);
// }
// else {
// NSLog(@"%@", dic);
// }
//
// // Skip directories with '_' prefix, for example
// if ([filename hasPrefix:@"_"] && [isDirectory boolValue]) {
// [enumerator skipDescendants];
// continue;
// }
//
// if (![isDirectory boolValue]) {
// [mutableFileURLs addObject:fileURL];
// }
// }
// if (error) {
// NSLog(@"%@", error);
// }
// else {
// NSLog(@"%@", contents);
// }
}
// 注意这个方法对文件和目录都起作用,但是取得目录的size是不对的
// NSDictionary *dic = [fileManager attributesOfItemAtPath:pathStr error:nil];