OC文件管理:2-NSFileManager类:目录操作
NSFileManager类也提供了用于处理目录的一些方法,这些方法与处理普通文件的方法类似。
获取与变更当前目录
像我们在操作系统中对文件操作类似,我们经常需要获取当前所在的目录,并且可以通过前进/后退等操作来改变当前的操作目录。在NSFileManager类中也提供了获取与变更当前目录的方法。
- 获取当前目录
@property (readonly, copy) NSString *currentDirectoryPath;
- 变更当前目录
- (BOOL)changeCurrentDirectoryPath:(NSString *)path;
下方的示例代码中,演示了如何获取当前目录以及对当前目录进行修改变更。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSFileManager *fm = [NSFileManager defaultManager];
//获取当前目录
NSString *path = [fm currentDirectoryPath];
NSLog(@"初始状态下的当前目录: <%@>",path);
//变更当前目录
NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES);
NSString * desktopPath = [paths objectAtIndex:0];
[fm changeCurrentDirectoryPath:desktopPath];
//检查当前目录
NSString *newpath = [fm currentDirectoryPath];
NSLog(@"变更后的当前目录: <%@>",newpath);
}
return 0;
}
运行结果如下。我们可以发现,初始状态时,当前操作的默认目录指向程序的调试目录。
目录的创建、重命名与删除
与创建文件类似,目录也可以进行创建,同时可以对目录进行移动、重命名以及删除,在NSFileManager类中也提供了对应的方法。
- 创建目录
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary<NSString *, id> *)attributes error:(NSError **)error;
- 重命名/移动目录
- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
- 删除目录
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
下方的示例代码,展示了对一个目录进行创建、重命名以及删除三个操作。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSFileManager *fm = [NSFileManager defaultManager];
//获取当前目录
NSString *path = [fm currentDirectoryPath];
NSLog(@"初始状态下的当前目录: <%@>",path);
//创建目录
NSString *myfolderPath = [path stringByAppendingPathComponent:@"myfolder"];
if ([fm createDirectoryAtPath:myfolderPath withIntermediateDirectories:YES attributes:nil error:nil]) {
NSLog(@"目录创建成功!");
}
//重命名与移动目录
NSString *myfolderNEWPath = [path stringByAppendingPathComponent:@"myNEWfolder"];
if ([fm moveItemAtPath:myfolderPath toPath:myfolderNEWPath error:nil]) {
NSLog(@"目录重命名成功");
}
//目录删除
if ([fm removeItemAtPath:myfolderNEWPath error:nil]) {
NSLog(@"目录删除成功");
}
}
return 0;
}
运行结果:
示例代码
https://github.com/99ios/4.7.2