文件操作——NSFileManager
NSFileManager:
对文件本身操作。
创建文件管理对象(单例)
#define PATH @"/users/XXX/Desktop/files"
NSFileManager * manager = [NSFileManager defaultManager];
浅遍历
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
获取指定路径下的内容,返回的是文件名的数组;
NSError __autoreleasing *error = nil;
NSArray *contents = [manager contentsOfDirectoryAtPath:PATH error:&error];
深遍历
- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
返回的是所有文件的相对路径;
NSArray *contents1 = [manager subpathsOfDirectoryAtPath:PATH error:&error];
/**
* 创建目录
* @param 1 路径(需要包含新的文件名)
@param 2 是否自动创建中间层目录
@param 3 文件属性
@param 4 错误信息
* @return 创建的结果
*/
NSError __autoreleasing *error = nil;
BOOL rec = [manager createDirectoryAtPath:[NSString stringWithFormat:@"%@/ttttt/newFile",PATH] withIntermediateDirectories:NO attributes:nil error:&error];
NSLog(@"%@",rec?@"创建成功":@"创建失败");
/**
* 创建文件
* 参数一: 路径(包含新的文件名)
* 参数二: 文件内容的二进制数据流
注意: 每次创建新的文件,都会覆盖掉原文件
*/
NSString *str = @"hello world ni hao";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
BOOL rec1 = [manager createFileAtPath:[NSString stringWithFormat:@"%@/未命名文件",PATH] contents:data attributes:nil];
NSLog(@"%d",rec1);
获取文件(这里说的文件包括文件夹和文件)的属性
NSDictionary * dic = [manager attrbutesOfItemAtPath:PATH error: &error];
NSLog(@"%@", dic);
设置文件属性
NSMutableDictionary * newDic = [NSMutableDictionary dictionaryWithDictionary:dic];
[newDic setObject:@292 forKey:NSFilePosixPermissions];
[newDic setObject:@1 forKey:NSFileExtensionHidden];
[manager setAttributes: newDic ofItemAtPath:PATH error : &error];
检测文件(目录)是否存在:
BOOL rec = [manager fileExistsAtPath:PATH];
BOOL isDir = NO;//接受是否是目录的返回值
rec = [manager fileExistsAtPath:PATH isDirectory:&isDir];
/*
copy
将指定路径的文件或者目录(深遍历)拷贝到另外一个指定的路径(包含文件名)
返回成功或者失败
*/
BOOL rec = [manager copyItemAtPath:[NSString stringWithFormat:@"%@/newDir",PATH] toPath:[NSString stringWithFormat:@"%@/file1/newDir",PATH] error:nil];
NSLog(@"%d",rec);
/*
move
可以移动文件或者文件夹(深遍历)
路径要包含新的名字,所以移动文件可以实现文件的改名
*/
[manager moveItemAtPath:[NSString stringWithFormat:@"%@/file1",PATH] toPath:@"/users/aaron/desktop/file1" error:nil];
/*
remove
*/
BOOL state = [manager removeItemAtPath:PATH error:nil];
NSLog(@"state = %d",state);