Objective-C( Foundation框架 一 NSFileManager)

时间:2024-08-07 13:08:02

NSFileManager

用来管理文件系统的

它可以用于常见的文件,文件夹操作(拷贝,剪切,创建)

NSFileManager使用了单例模式(Singleton)

使用defaultManager可以获得那个单例对象:[NSFileManager defaultManager];

NSFileManager用于判断

// 创建一个文件,且内容为hahdhahkf
NSString *arr = @"hahdhahkf";
[arr writeToFile: @"/Users/cloudwalk/Desktop/arr.plist" atomically:YES encoding:NSUTF8StringEncoding error:nil];
// NSFileManager用于判断
NSString *filepath = @"/Users/cloudwalk/Desktop/arr.plist";
// 判断文件是否存在
// 调用defaultManagr 创建一个文件管理的单例模式
// 单例模式,在程序运行期间,只有一个对象存在
NSFileManager *manager = [NSFileManager defaultManager];
//文件是否存在,存在返回1,不存在返回0
 BOOL isYES = [manager fileExistsAtPath:filepath]; 
NSLog(@"%d",isYES); // 文件是否可读
isYES = [manager isReadableFileAtPath:filepath];
NSLog(@"%d",isYES); // 文件是否可写
isYES = [manager isWritableFileAtPath:filepath];
NSLog(@"%d",isYES);

判断是否是目录

        NSString *str = @"dsahgifg";
[str writeToFile:@"/Users/cloudwalk/Desktop/strr,plist" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *filePath = @"/Users/cloudwalk/Desktop/strr,plist"; NSFileManager *manager = [NSFileManager defaultManager];
// 文件是否存在,,存在返回1,不存在返回0
BOOL isYes = [manager fileExistsAtPath:filePath];
NSLog(@"%d",isYes); if (isYes)
{
BOOL isDir;
// 判断是不是目录
[manager fileExistsAtPath:filePath isDirectory:&isDir]; if (isDir) {
NSLog(@"shi");
}else{
NSLog(@"bushi");
}
}

获取文件信息

        NSFileManager *fm = [NSFileManager defaultManager];
NSString *filepath = @"/Users/cloudwalk/Desktop/test.plist";
NSString *dirPath = @"/Users/cloudwalk/Desktop/gaoli/代码/";
// 如何获得文件信息(属性)
NSDictionary *dy = [fm attributesOfItemAtPath:filepath error:nil];
NSLog(@"%@",dy);
NSLog(@"%@ %@",[dy objectForKey:@"NSFileOwnerAccountName"], dy[@"NSFileOwnerAccountName"]); // 获取指定目录下文件及子目录
// 使用递归的方式,获取当前所有文件夹及子目录下的文件
NSArray *subPaths = [fm subpathsAtPath:dirPath];
NSLog(@"subPaths = %@",subPaths);
// 不使用递归的方式,获取当前所有文件夹及子目录下的文件
subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"subPaths = %@",subPaths);
// 获取指定目录下文件信息(不再获取子目录下文件)
subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"subPaths = %@",subPaths);

创建目录,文件,copy文件,移动文件,删除文件

       // 创建文件管理对象
NSFileManager *fm = [NSFileManager defaultManager]; // 创建路径
NSString *createPath = @"/Users/cloudwalk/Desktop/aaa/win.txt"; // 创建目录是否成功
//fm createDirectoryAtPath:@"路径" withIntermediateDirectories:YES会创建缺失的目录/NO不会创建缺失的目录 attributes:nil error:错误对象
BOOL isYES =[fm createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];
if (isYES) {
NSLog(@"成功");
} // 如何创建文件

      NSString *str = @"我一定会考进HEIMA";

      NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

        BOOL isYes;
//fm createFileAtPath:@"路径" contents:NSData类型的数据/处理二进制数据的类 attributes:文件的属性的字典NSDictionary
isYes = [fm createFileAtPath:createPath contents:data attributes:nil];
if (isYes) {
NSLog(@"%d",isYes);
}
// copy文件
NSString *targetPath = @"/Users/cloudwalk/Desktop/gaoli/haha.txt";
isYes = [fm copyItemAtPath:createPath toPath:targetPath error:nil];
NSLog(@"%d",isYes); // 移动文件
NSString *targetPath = @"/Users/cloudwalk/Desktop/haha.txt";
[fm moveItemAtPath:createPath toPath:targetPath error:nil]; // 删除文件
NSString *targetPath = @"/Users/cloudwalk/Desktop/haha.txt";
[fm removeItemAtPath:targetPath error:nil];

NSFileManager 文件下载思路

1.发送请求给服务器,要求下载某个文件

2.服务器发出响应,返回文件数据

3.手机客户端利用NSData来存放服务器返回的文件数据

4.利用NSFileManager将NSData里面的文件数据写到新的文件中(createFilecreateFileAtPath)