Foundation框架允许使用一些基本对象,如数字、字符串,以及一些对象集合,如数组、字典和集合。另外,Foundation框架还提供了包括日期处理、自动化内存管理、处理基础文件系统、存储/归档对象等常用基础类。本文主要介绍他们的使用以及常用的方法,如有错误,欢迎指出,一起学习,😊!
一、Foundation框架之NSFileManager
NSFileManager是Foundation框架提供的一个类,这个类的对象是以单例模式创建的
这个类的作用:用来操作磁盘文件 文件夹,对他们进行创建、删除、复制、拷贝、移动等
1.常用方法之判断
1)判断指定的文件或者文件夹在磁盘上是否真实存在,存在返回YES,不存在返回NO
- (BOOL)fileExistsAtPath:(NSString *)path;
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = @"/Users/lvlvjing/Desktop/a.txt";
BOOL res = [manager fileExistsAtPath:path];
NSLog(@"res = %@",res==YES?@"YES":@"NO");
2)判断指定的路径是否真实存储在我们的磁盘上,并且判断这个路径是一个文件路径还是一个文件夹路径,如果返回是YES,说明文件存储在磁盘上,否则没有在,参数如果是YES,代表是文件夹,否则是文件(需要注意的是,BOOL类型的参数初始化为YES或是NO都没有关系,经过系统处理会给值)
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(nullable BOOL *)isDirectory;
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = @"/Users/lvlvjing/Desktop/a.txt";
BOOL flag;
BOOL res1 = [manager fileExistsAtPath:path isDirectory:&flag];
if (res1 == YES) {
NSLog(@"给定的文件存在");
if (flag == YES) {
//说明给定的文件是一个文件夹路径
NSLog(@"这是一个文件夹");
}else {
NSLog(@"这是一个文件");
}
}else {
NSLog(@"给定的路径不存在");
}
3)判断给定的路径的文件或者文件夹是否有权限去读 ,返回YES代表有权限
- (BOOL)isReadableFileAtPath:(NSString *)path;
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = @"/Users/lvlvjing/Desktop/a.txt";
BOOL res2 = [manager isReadableFileAtPath:path];
NSLog(@"res2 = %@",res2==YES?@"YES":@"NO");
4)判断给定的路径的文件或者文件夹是否有权限去写,返回YES代表有权限
- (BOOL)isWritableFileAtPath:(NSString *)path;
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = @"/Users/lvlvjing/Desktop/a.txt";
BOOL res3 = [manager isWritableFileAtPath:path];
NSLog(@"res3 = %@",res3==YES?@"YES":@"NO");
5)判断给定的文件或者文件夹是否有权限去删除,返回YES代表有权限
- (BOOL)isDeletableFileAtPath:(NSString *)path;
举例:删除系统文件,系统文件不能删除,所以返回NO
NSFileManager *manager = [NSFileManager defaultManager];
BOOL res4 = [manager isDeletableFileAtPath:@"/System"];
NSLog(@"res4 = %@",res4==YES?@"YES":@"NO");
2.常用方法之获取信息
1)获取指定文件夹或者文件的属性信息
- (nullable NSDictionary<NSFileAttributeKey, id> *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSDictionary *dict = [manager attributesOfItemAtPath:@"/Users/lvlvjing/Desktop/a.txt" error:nil];
NSLog(@"%@",dict);
2).获取指定目录下的所有的文件和目录,是拿到指定目录下的所有的文件和目录,所有的后代目录和文件
子目录,子目录的子目录,所有的都可以拿到
- (nullable NSArray<NSString *> *)subpathsAtPath:(NSString *)path;
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *array = [manager subpathsAtPath:@"/Users/lvlvjing/desktop/ios项目"];
NSLog(@"%@",array);
3)获取指定文件夹的子路径,只有子路径
- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
举例:
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *array = [manager contentsOfDirectoryAtPath:@"/Users/lvlvjing/desktop/项目" error:nil];
NSLog(@"array = %@",array);