Foundation框架中的NSFileManager一
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Foundation框架中的NSFileManager一相关的知识,希望对你有一定的参考价值。
看官们,我们在前面章回中介绍了Foundation框架中的NSMutableData,本章回中将介绍Foundation框架中的NSFileManager。
NSFileManager是文件相关的类,该类提供了与文件操作相关的方法,接下来我们将介绍如何使用这些方法来操作文件。这里说的文件表示我们常用的文件和目录,因为ios是类似Unix的操作系统,该系统中所有内容都被l当作文件。本章回中主要介绍目录相关的操作,后面的章回中将文件相关的操作。
获取home目录
@property(readonly, copy) NSURL *homeDirectoryForCurrentUser;
在类Unix系统中每个用户都有一个home目录,该方法是可以返回当前用户的home目录。不过目录的类型是NSURL, 关于NSURL类型,我们在后面章回中再详细介绍。
创建目录
- (BOOL)createDirectoryAtPath:(NSString *)path
withIntermediateDirectories:(BOOL)createIntermediates
attributes:(NSDictionary<NSFileAttributeKey, id> *)attributes
error:(NSError * _Nullable *)error;
该方法可以创建一个目录,如果创建成功就返回YES,否则返回NO,目录的所在的位置位于第一个参数path中。第二参数表示是否创建父目录,当它设置为YES时,如果path中的目录所在的父目录不存在,那么就创建父目录,当它设置为NO时,如果path中的目录所在的父目录不存在,那么不创建父目录,这样创建目录就会失败,因此我们通常将该参数的值设置为YES。
第三个参数表示目录的属性,比如读写权限等,这点和类Unix系统中文件的的属性一样,我们通常将其值设置为nil,表示使用系统默认的文件属性。我的系统上默认文件属性为:drwxr-xr-x。通常情况下,如果没有修改系统文件的默认属性,大家看到的文件属性和我的一样,大家可以动手试试。第四个参数表示创建文件时如果有错误就把错误信息写到该参数中。 我们暂时忽略该错误,所以可以临时将其设置为nil.
删除目录
- (BOOL)removeItemAtPath:(NSString *)path
error:(NSError * _Nullable *)error;
该方法可以删除指定的目录,目录通过参数path来指定,删除目录的结果通过返回值来判断,如果返回值为YES表示成功删除目录,否则表示删除目录失败。失败的原因可以通过该方法的第二个参数来查找,因为它存放了该方法运行失败时的失败信息,我们暂时忽略了该项信息。
查找文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
该方法可以判断指定文件(包含文件和目录)是否存在,指定文件通过参数path来指定,如果该方法返回YES表示文件存在,否则表示文件不存在。
通常情况下,我们在创建或者删除文件前最好通过该方法来判断目录是否存在,这样可以避免不必要的错误。
获取目录下的文件名字
- (NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path
error:(NSError * _Nullable *)error;
该方法可以获取指定目录下的所有文件和目录的名字,指定目录通过参数path来设定。文件和目录的名字保存到该方法返回的数组中,该数组的成员为NSString类型,其值就是文字或者目录的名字。该方法的第二个参数用来存放方法运行失败时的失败信息,我们暂时忽略了该项信息。
看官们,上面介绍的是NSFileManager类中各个方法的作用与使用方法,接下来我们通过代码来演示如何使用这些方法。下面是具体的代码:
#include<Foundation/Foundation.h>
int main()
{
//获取home目录
NSFileManager *fm = [NSFileManager defaultManager];
NSLog(@"path: %@", [fm homeDirectoryForCurrentUser]);
//创建目录并且判断是否创建成功
NSString *path = @"/Users/talk8/test/";
BOOL result = [fm createDirectoryAtPath:path
withIntermediateDirectories:YES attributes:nil error: nil];
if(result) {
NSLog(@"create dir successfully");
} else {
NSLog(@"create dir failed");
}
//删除目录并且判断是否删除成功
result = NO;
result = [fm removeItemAtPath:path error:nil];
if(result) {
NSLog(@"delete dir successfully");
} else {
NSLog(@"delete dir failed");
}
//查找文件是否存在
if([fm fileExistsAtPath:path]) {
NSLog(@"file exist");
}else {
NSLog(@"file don't exist");
}
//获取目录下的文件并且显示文件名字
NSArray *allFile = [fm contentsOfDirectoryAtPath:path error:nil];
NSLog(@" %@",allFile);
return 0;
}
在代码中我们添加了相关的注释,以方便大家理解代码。程序中的内容比较少,大家可以直接判断出运行结果,因此我们就不展示程序运行结果了,不过大家一定要自己动手是运行程序,一边分析代码,一边对比程序运行结果是否符合代码逻辑。
最后我们对本章回的内容做一个总结:
- 1.NSFileManager表示文件相关的类,它提供了许多方法来操作文件;
- 2.掌握获取home目录和获取特定目录下所有文件的方法,这些方法在程序中经常使用;
- 3.掌握创建、删除、查找目录的方法,在创建删除目录前最好查找目录是否存在,以避免不必要的错误;
- 4.NSFileManager类中还其它操作目录的方法,比如复制、移动目录等,建议大家查看官方文档,官方文档写的很详细;
看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!
以上是关于Foundation框架中的NSFileManager一的主要内容,如果未能解决你的问题,请参考以下文章