(配图的小故事还记得嘛)

NSFileManager是一个单列类,也是一个文件管理器。可以通过NSFileManager创建文件夹、创建文件、写文件、读文件内容等等基本功能。

下面将介绍NSFileManager文件操作的十个小功能。我们在Documents里面进行举例,首先是获取Documents的路径。这个在iOS开发之沙盒机制(SandBox)已经详细讲解过了。获取Documents路径方法如下:

- (NSString *)getDocumentsPath
{//获取Documents路径NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path = [paths objectAtIndex:0];NSLog(@"path:%@", path);return path;
}

创建文件夹

-(void)createDirectory{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSDirectory = [documentsPath stringByAppendingPathComponent:@"iOS"];BOOL isSuccess = [fileManager createDirectoryAtPath:iOSDirectory withIntermediateDirectories:YES attributes:nil error:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

创建文件

-(void)createFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager createFileAtPath:iOSPath contents:nil attributes:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

写文件

-(void)writeFile{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = @"我要写数据啦";BOOL isSuccess = [content writeToFile:iOSPath atomically:YES encoding:NSUTF8StringEncoding error:nil];if (isSuccess) {NSLog(@"write success");} else {NSLog(@"write fail");}
}

读取文件内容

-(void)readFileContent{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = [NSString stringWithContentsOfFile:iOSPath encoding:NSUTF8StringEncoding error:nil];NSLog(@"read success: %@",content);
}

判断文件是否存在

- (BOOL)isSxistAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];return isExist;
}

计算文件大小

- (unsigned long long)fileSizeAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];if (isExist){unsigned long long fileSize = [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];return fileSize;} else {NSLog(@"file is not exist");return 0;}
}

计算整个文件夹中所有文件大小

- (unsigned long long)folderSizeAtPath:(NSString*)folderPath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:folderPath];if (isExist){NSEnumerator *childFileEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];unsigned long long folderSize = 0;NSString *fileName = @"";while ((fileName = [childFileEnumerator nextObject]) != nil){NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];folderSize += [self fileSizeAtPath:fileAbsolutePath];}return folderSize / (1024.0 * 1024.0);} else {NSLog(@"file is not exist");return 0;}
}

删除文件

-(void)deleteFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager removeItemAtPath:iOSPath error:nil];if (isSuccess) {NSLog(@"delete success");}else{NSLog(@"delete fail");}
}

移动文件

- (void)moveFileName
{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

重命名

- (void)renameFileName
{//通过移动该文件对文件重命名NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"rename.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

以上文件操作代码都在iOSStrongDemo,可以直接通过git拉下来进行测试。关于NSFileManager的用法还有很多,一起接续探索吧!

转载于:https://www.cnblogs.com/xvewuzhijing/p/5003862.html

iOS开发学无止境 - NSFileManager文件操作的十个小功能相关推荐

  1. NSFileManager文件操作的十个小功能

    (配图的小故事还记得嘛) NSFileManager是一个单列类,也是一个文件管理器.可以通过NSFileManager创建文件夹.创建文件.写文件.读文件内容等等基本功能. 下面将介绍NSFileM ...

  2. iOS开发_iphone 实现剪贴板操作_iphone 复制粘贴功能

    在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享.比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容. 一.在iOS中下面三个控件, ...

  3. (0095)iOS开发之本地文件预览的三种方法(3)

    (0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...

  4. (0094)iOS开发之本地文件预览的三种方法(2)

    (0090)iOS开发之本地文件预览的三种方法(1) (0095)iOS开发之本地文件预览的三种方法(3) QuickLook预览文件 quickLook预览文件也是系统提供的预览方法,具体使用如下 ...

  5. iOS开发网络篇—文件的上传

    说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: Y ...

  6. iOS开发中plist文件的创建与简单读取(一)

    iOS开发中plist文件的创建与简单读取(一) 1. 创建一个工程 2. 新建一个plist文件(command+N快捷键或者新建文件 如图下的红色圈) 3. 红色圈是plist的文件名,这里默认为 ...

  7. iOS开发UI篇—实现一个私人通讯录小应用(一)

    iOS开发UI篇-实现一个私人通讯录小应用(一) 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮 ...

  8. ios开发证书CSR文件、CER文件、P12文件,mobileprovition许可文件的用途

    1.CSR文件      钥匙串文件,为生成证书做基础,要生成CER证书必须要有CSR私钥,此私钥包含了用户自己的一些信息. 2.开发证书 CER文件 苹果的这个开发者证书也是同样的原理,本地的req ...

  9. ios开发证书CER文件、P12文件,mobileprovition许可文件的用途

    1,开发证书 CER文件 这个文件的申请请去 http://blog.csdn.net/lanergaming/article/details/38784925 根据前边的博客大家已经知道证书.公钥. ...

最新文章

  1. 你甘心就这样过一辈子?
  2. 【算法21】从1到n的正数中1的出现次数
  3. centos7 mysql数据库安装和配置
  4. python generator
  5. 前端怎么自我介绍_未雨绸缪,小米前端实习面经
  6. python数据存储到access_Python操作Access数据库基本步骤分析
  7. 基于STC12C5A60S2的SDHC卡的初始化和读写过程
  8. 意在寥廓观鸿蒙 什么意思,“滴滴寒露凋芙蓉”的意思及全诗出处和翻译赏析...
  9. Vulhub-coldfusion--CVE-2017-3066
  10. 下次面试再一上来就问我线程有哪些状态,我上去就是给他一 jio
  11. SVM分类器中损失函数梯度求法及理解
  12. IDEA搜索上一个下一个搜索关键字的快捷键
  13. 利用adb指令为IPTV盒子安装应用
  14. 你说学习重要,还是经营人脉重要
  15. 开源飞控ardupilot避障传感器的使用-1乐迪超声波避障SUI04
  16. 开发旺旺群发软件,难点及重要技术点分析(一)
  17. 关于屏蔽网页广告的方法
  18. LayaAir demo 学习3D弹力球简单实现
  19. 数据结构——三元组实现稀松矩阵
  20. [力扣]32. 最长有效括号(三解法)

热门文章

  1. oracle+tns+01106,TNS-01106:Listener using listener name already been started
  2. sts java配置tomcat_STS配置Tomcat.9.0
  3. java都要caps标点_第 1 章 管理 Java CAPS 用户
  4. python动态时钟代码_python绘制动态时钟
  5. String使用注意二
  6. 二叉树中的最大路径和
  7. go语言 expected ; found a
  8. 《MySQL——连接查询》
  9. 时间模块,带Python示例
  10. 方法:求两个数之和 判断两数是否相等