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 *)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 *)subpathsAtPath:(NSString *)path;

举例:

       NSFileManager *manager = [NSFileManager defaultManager];

        NSArray *array  = [manager subpathsAtPath:@"/Users/lvlvjing/desktop/ios项目"];

        NSLog(@"%@",array);

 

 

3)获取指定文件夹的子路径,只有子路径

- (nullable NSArray *)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);

 

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: