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一的主要内容,如果未能解决你的问题,请参考以下文章

Foundation框架中的NSDate

Foundation框架中的NSData

Foundation框架中的NSMutableData

Foundation框架中的Collections

Foundation框架中的日期操作总结

Foundation框架中的NSFileHandle一