文件处理
怎样判断文件是标准的文件还是文件夹
NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filepath error:nil];
[attrs[NSFileType] isEqualToString:NSFileTypeDirectory]
[[NSFileManager defaultManager] fileExistsAtPath:<#(nonnull NSString *)#> isDirectory:<#(nullable BOOL *)#>]
BOOL dir = NO;
[manager fileExistsAtPath:filepath isDirectory:&dir];
if (dir) 是文件夹
获取沙盒中的cache路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
应用沙盒目录的常见获取方式
- 沙盒根目录
NSString *home = NSHomeDirectory();
- Documents
NSString *documents= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
- tmp
NSString *tmp = NSTemporaryDirectory();
- Library/Preference
- 通过NSUserDefaults类存取该目录下的设置信息
获得文件夹内部的所有文件(内容)
- 利用文件遍历器
NSDirectoryEnumerator
获取该文件夹下面的所有文件的路径, 如果该文件夹中存在文件夹A, 也会获取文件夹A中所有的文件的路径( 递归 ).
NSDirectoryEnumerator *fileEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:cachePath];
for (NSString *fileName in fileEnumerator) {
NSString *filepath = [cachePath stringByAppendingPathComponent:fileName];
}
NSArray *subpaths = [[NSFileManager defaultManager] subpathsAtPath:cachePath];
for (NSString *fileName in subpaths) {
NSString *filepath = [cachePath stringByAppendingPathComponent:fileName];
}
获得一个文件夹的大小
NSFileManager *manager = [NSFileManager defaultManager];
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *cachePath = [caches stringByAppendingPathComponent:@"default/com.hackemist.SDWebImageCache.default"];
NSDirectoryEnumerator *fileEnumerator = [manager enumeratorAtPath:cachePath];
NSInteger totalSize = 0;
for (NSString *fileName in fileEnumerator) {
NSString *filepath = [cachePath stringByAppendingPathComponent:fileName];
NSDictionary *attrs = [manager attributesOfItemAtPath:filepath error:nil];
if ([attrs[NSFileType] isEqualToString:NSFileTypeDirectory]) continue;
totalSize += [attrs[NSFileSize] integerValue];
}
删除一个文件夹
[[NSFileManager defaultManager] removeItemAtPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>];