OC 文件管理器NSFileManager

时间:2021-07-15 21:07:07

NSFileManager是一个单例结构可以用这个类,进行创建文件、删除文件、移动文件或者获取文件信息。
目录与文件创建

int main(int argc, const char * argv[]) {
@autoreleasepool {
// 获取NSFileManager单例对象
NSFileManager *fm = [NSFileManager defaultManager];
// 创建目录/Users/apple/Desktop/hhh
NSString *path = @"/Users/apple/Desktop/dir/test";
// withIntermediateDirectories 中间目录要不要创建
NSError *error = nil;
// 这个方法只能创建文件目录(文件夹)
BOOL isSuccess = [fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
if (isSuccess) {
NSLog(@"创建成功!");
}else{
NSLog(@"%@",error);
}

path = @"/Users/apple/Desktop/dir/test/abc.txt";
// 创建文件
NSString *str = @"今天OC最后一天!";
// NSData OC中用于保存二进制数据的,对应图片、视频这些类型的文件只能使用NSData来保存
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
isSuccess = [fm createFileAtPath:path contents:data attributes:nil];
if (isSuccess) {
NSLog(@"文件创建成功!");
}
}
return 0;
}

文件修改

int main(int argc, const char * argv[]) {
@autoreleasepool {
// 获取NSFileManager单例对象
NSFileManager *fm = [NSFileManager defaultManager];

NSString *path = @"/Users/zzj/Desktop/test.m";
// 即可判断文件也可以是文件夹
BOOL isExists = [fm fileExistsAtPath:path];
if(isExists){
NSLog(@"存在");
}

BOOL isDir = NO;//是否为文件夹
isExists = [fm fileExistsAtPath:path isDirectory:&isDir];
// 只有存在isDir才有意义
if(isExists){
NSLog(@"存在 ,%d",isDir);
}else{
NSLog(@"不存在 ,%d",isDir);
}
// 判断文件权限
// 判断文件是否可读
BOOL isReadable = [fm isReadableFileAtPath:path];
NSLog(@"%d",isReadable);
// 判断文件是否可写
BOOL isWritable = [fm isWritableFileAtPath:path];
NSLog(@"%d",isWritable);
NSError *error = nil;
// 获取文件或目录的属性
NSDictionary *attr = [fm attributesOfItemAtPath:path error:&error];
if (!error) {
NSLog(@"%@",attr);
}
// 获取文件或文件夹的大小
NSNumber *size = attr[@"NSFileSize"];
size = attr[NSFileSize];
NSLog(@"szie = %@",size);
NSDate *date = attr[NSFileModificationDate];
NSLog(@"%@",date);

// 拷贝文件 复制文件(可以是文件也可是文件夹)
NSString *dest = @"/Users/zzj/Desktop/test.m";

BOOL isSuccess = [fm copyItemAtPath:path toPath:dest error:&error];
if (isSuccess) {
NSLog(@"拷贝成功!");
}
NSString *moveTo = @"/Users/apple/zzj/testMove/test.m";
// 移动文件/剪切
isSuccess = [fm moveItemAtPath:path toPath:moveTo error:&error];
if (isSuccess) {
NSLog(@"移动成功!");
}

}
return 0;
}

遍历文件查找用户目录下的jpg文件

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSFileManager *manager = [NSFileManager defaultManager];
// 获取用户目录
NSString *home = [@"~" stringByExpandingTildeInPath];
// 迭代器
NSDirectoryEnumerator *direnum = [manager enumeratorAtPath:home];
NSMutableArray *files = [NSMutableArray arrayWithCapacity:42];
NSString *filename;
while (filename = [direnum nextObject]) {
if ([[filename pathExtension] isEqualTo:@"jpg"]) {
[files addObject:filename];
}
}
NSEnumerator *fileenum = [files objectEnumerator];
while (filename = [fileenum nextObject]) {
NSLog(@"%@", filename);
}
}
return 0;
}