Foundation框架中的NSFileManager二

Foundation框架中的NSFileManager二

 

看官们,我们在前面章回中介绍了Foundation框架中的NSFileManager,本章回中将继续介绍它。
我们在上一章回中主要介绍了目录相关的操作,本章回中主要介绍文件相关的操作。

创建文件

- (BOOL)createFileAtPath:(NSString *)path
                contents:(NSData *)data
              attributes:(NSDictionary<NSFileAttributeKey, id> *)attr;


该方法可以创建一个文件,如果创建成功就返回YES,否则返回NO,文件的名字和所在的位置位于第一个参数path中,文件的内容位于第二参数data中,文件的属性位于第三个参数attr中,我们通常将其值设置为nil,表示使用系统默认的文件属性。 我的系统上默认文件属性为:-rw-r--r--。通常情况下,如果没有修改系统文件的默认属性,大家看到的文件属性和我的一样,大家可以动手试试 。


删除文件


- (BOOL)removeItemAtPath:(NSString *)path
                   error:(NSError * _Nullable *)error;


这个方法我们在上一章回中介绍过,使用时只需要把参数path中的目录替换成文件就可以,我们在这里就不详细介绍了,不过在示例代码中我们演示了具体的用法,大家可以参考示例代码。

查找文件是否存在
 

- (BOOL)fileExistsAtPath:(NSString *)path;


这个方法我们在上一章回中介绍过,使用时只需要把参数path中的目录名替换成文件名就可以,我们在这里就不详细介绍了。 这里强调一下,该方法既可以用来判断目录是否存在也可以判断文件是否存在。


判断文件的属性

- (BOOL)isReadableFileAtPath:(NSString *)path;
- (BOOL)isWritableFileAtPath:(NSString *)path;
- (BOOL)isExecutableFileAtPath:(NSString *)path;


这三个方法用来判断文件的读写和执行属性,这点从方法的名字中也可以看出来,它们的用法相同,使用这些方法时只需要在参数path中指定一个文件,然后通过方法的返回值返回该文件的属性。如果返回值为YES表示文件具有该属性,否则表示文件不具有该属性。


看官们,上面介绍的是NSFileManager类中关于文件操作的方法,接下来我们通过代码来演示如何使用这些方法。下面是具体的代码:

#include<Foundation/Foundation.h>

int main()
{
	//创建NSFileManager对象
	NSFileManager *fm = [NSFileManager defaultManager];

	//创建文件并且判断是否创建成功
	NSString *path = @"/Users/wangyuan/code/oc/a.c";
	char buffer[5] = "hello";
	NSData *data = [[NSData alloc] initWithBytes:buffer length:5];
	BOOL result = [fm createFileAtPath:path contents:data attributes:nil];
	if(result) {
		NSLog(@"create file successfully");
	} else {
		NSLog(@"create file failed");
	}

	//判断文件的读写和执行属性
	if([fm isReadableFileAtPath:path]) {
		NSLog(@"file is readable");
	}else {
		NSLog(@"file is not readable");
	}

	if([fm isWritableFileAtPath:path]) {
		NSLog(@"file is writable");
	}else {
		NSLog(@"file is not writable");
	}

	if([fm isExecutableFileAtPath:path]) {
		NSLog(@"file is executable");
	}else {
		NSLog(@"file is not executable");
	}

	//删除文件并且判断是否删除成功
	result = NO;
	result = [fm removeItemAtPath:path error:nil];
	if(result) {
		NSLog(@"delete file successfully");
	} else {
		NSLog(@"delete file failed");
	}

	return 0;
}

 
在代码中我们添加了相关的注释,以方便大家理解代码。程序中的内容比较少,大家可以直接判断出运行结果,因此我们就不展示程序运行结果了,不过大家一定要自己动手是运行程序,一边分析代码,一边对比程序运行结果是否符合代码逻辑。


最后我们对本章回的内容做一个总结:

  • 1.掌握创建、删除、查找文件的方法,在创建或删除文件前最好查找文件是否存在;
  • 2.掌握判断文件是否具有读写执行属性的方法,这些方法在程序中经常使用;
  • 3.NSFileManager类中还其它操作文件的方法,比如复制、移动等,建议大家查看官方文档;


看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!

上一篇:iOS工具 - NSLog日志打印出中文


下一篇:数据结构回顾复习总结(一)(时间复杂度、空间复杂度)