所有方法

都很简单,大概记录一下,写文件并没有是追加的方式而是简单的覆盖

//创建文件夹
- (BOOL)creatDir:(NSString*)newDirName at:(NSString*)dirName ;
//创建文件
- (BOOL)creatFile:(NSString*)fileName at:(NSString*)dirName ;
//写文件-字符串
- (BOOL)writeString:(NSString*)string inFilePath:(NSString*)filePath;
//写文件-字典
- (BOOL)writeDict:(NSDictionary*)dict inFilePath:(NSString*)filePath ;
//写文件-数组
- (BOOL)writeArray:(NSArray*)array inFilePath:(NSString*)filePath ;
//读文件
- (NSString*)readFileAt:(NSString*)filePath;
//获取某个目录下所有文件
- (NSArray*)getAllFileAtDir:(NSString*)dirPath ;
//判断文件是否存在
- (BOOL)fileIsExistAtPath:(NSString*)filePath ;
//计算某个文件大小
- (unsigned long long)computerFileSizeAtPath:(NSString*)filePath;
//计算整个文件夹中所有文件大小
- (unsigned long long)computerDirSizeAtPath:(NSString*)dirPath;
//删除文件
- (BOOL)removeFileAtPath:(NSString*)filePath;
//移动文件
- (BOOL)moveFile:(NSString*)fileName fromPath:(NSString*)fromPath toPath:(NSString*)toPath;

具体实现

初始化一下NSFileManager 并获取根路径

主要是加了一些判断,代码不是很精简 不要笑我。

- (instancetype)init {
self = [super init];
if (self) {
self.homePath = NSHomeDirectory();
self.manager = [NSFileManager defaultManager];
NSLog(@"根路径地址:%@",self.homePath);
}
return self;
}
//创建文件夹
- (BOOL)creatDir:(NSString*)newDirName at:(NSString*)dirName {
NSString *path = [self.homePath stringByAppendingString:dirName];
NSString *filePath = [path stringByAppendingPathComponent:newDirName];
if ([self.manager fileExistsAtPath:filePath]) {
NSLog( @"创建失败,目录已存在");
}else {
BOOL isCreate = [self.manager createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];
if (isCreate) {
NSLog( @"创建成功");
return YES;
} else {
NSLog( @"创建失败,请检查路径");
return NO;
}
}
return NO;
}
//创建文件
- (BOOL)creatFile:(NSString*)fileName at:(NSString*)dirName {
//目录位置
NSString *dirPath = [self.homePath stringByAppendingString:dirName];
//文件位置
NSString *filePath = [dirPath stringByAppendingPathComponent:fileName];
BOOL isDir = NO;
BOOL isFileExist = [self.manager fileExistsAtPath:dirPath isDirectory:&isDir];
//目录是否存在
if (!(isFileExist && isDir)) {
NSLog(@"目录不存在,请先创建目录");
return NO;
}
//文件是否存在
if (![self.manager fileExistsAtPath:filePath]) {
BOOL isCreate = [self.manager createFileAtPath:filePath contents:nil attributes:nil];
if (isCreate) {
NSLog(@"创建成功");
return YES;
} else {
NSLog(@"创建失败");
return NO;
}
}
else {
NSLog(@"创建失败,文件已存在");
return NO;
}
return NO;
}
//写文件-字符串
- (BOOL)writeString:(NSString*)string inFilePath:(NSString*)filePath{
NSString *path = [self.homePath stringByAppendingString:filePath];
BOOL isFileExist = [self.manager fileExistsAtPath:path];
if (isFileExist) {
BOOL isWrite = [string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (isWrite) {
NSLog(@"写入成功");
return YES;
} else {
NSLog( @"写入失败");
return NO;
}
}else{
NSLog(@"文件不存在,请先创建文件");
return NO;
}
return NO;
}
//写文件-字典
- (BOOL)writeDict:(NSDictionary*)dict inFilePath:(NSString*)filePath {
NSString *path = [self.homePath stringByAppendingString:filePath];
BOOL isFileExist = [self.manager fileExistsAtPath:path];
if (isFileExist) {
BOOL isWrite = [dict writeToFile:path atomically:YES];
if (isWrite) {
NSLog(@"写入成功");
return YES; } else {
NSLog(@"写入失败");
return NO; }
}else{
NSLog(@"文件不存在,请先创建文件");
return NO; }
return NO; }
//写文件-数组
- (BOOL)writeArray:(NSArray*)array inFilePath:(NSString*)filePath {
NSString *path = [self.homePath stringByAppendingString:filePath];
BOOL isFileExist = [self.manager fileExistsAtPath:path];
if (isFileExist) {
BOOL isWrite = [array writeToFile:path atomically:YES];
if (isWrite) {
NSLog(@"写入成功");
return YES; } else {
NSLog(@"写入失败");
return NO;
}
}else{
NSLog(@"文件不存在,请先创建文件");
return NO;
}
return NO;
}
//读文件
- (NSString*)readFileAt:(NSString*)filePath{
NSString *path = [self.homePath stringByAppendingString:filePath];
NSData *data = [self.manager contentsAtPath:path];
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return result;
}
//获取某个目录下所有文件
- (NSArray*)getAllFileAtDir:(NSString*)dirPath {
NSString *path = [self.homePath stringByAppendingString:dirPath];
NSArray *dirArray = [self.manager contentsOfDirectoryAtPath:path error:nil];
return dirArray;
}
//判断文件是否存在
- (BOOL)fileIsExistAtPath:(NSString*)filePath {
NSString *path = [self.homePath stringByAppendingString:filePath];
BOOL isFileExist = [self.manager fileExistsAtPath:path];
if (isFileExist) {
NSLog(@"文件存在");
return YES; } else {
NSLog(@"文件不存在");
return NO; }
return NO;
}
//计算某个文件大小 单位是字节
- (unsigned long long)computerFileSizeAtPath:(NSString*)filePath {
NSString *path = [self.homePath stringByAppendingString:filePath];
BOOL isDir;
BOOL isFile = [self.manager fileExistsAtPath:path isDirectory:&isDir];
if (!isDir) {
if (!isFile) {
NSLog(@"文件不存在");
return 0; }else {
unsigned long long fileSize = [self.manager attributesOfItemAtPath:path error:nil].fileSize;
return fileSize;
}
} else {
NSLog( @"该文件是一个目录");
return 0;
}
return 0;
}
//计算整个文件夹中所有文件大小
- (unsigned long long)computerDirSizeAtPath:(NSString*)dirPath {
NSString *path = [self.homePath stringByAppendingString:dirPath];
BOOL isExist = [self.manager fileExistsAtPath:path];
if (isExist) { NSEnumerator *childFilesEnumerator = [[self.manager subpathsAtPath:path] objectEnumerator];
NSString* fileName;
long long folderSize = 0;
while ((fileName = [childFilesEnumerator nextObject]) != nil){
NSString* fileAbsolutePath = [path stringByAppendingPathComponent:fileName];
folderSize += [self.manager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;
}
return folderSize; } else {
NSLog(@"目录不存在");
return 0;
}
return 0;
}
//删除文件
- (BOOL)removeFileAtPath:(NSString*)filePath {
NSString *path = [self.homePath stringByAppendingString:filePath];
if ([self.manager fileExistsAtPath:path]) {
BOOL isRemove = [self.manager removeItemAtPath:path error:nil];
if (!isRemove) {
NSLog(@"移除失败");
return NO;
} else {
NSLog(@"移除成功");
return YES;
}
} else {
NSLog(@"文件不存在");
return NO;
}
return NO;
}
//移动文件
- (BOOL)moveFile:(NSString*)fileName fromPath:(NSString*)fromPath toPath:(NSString*)toPath {
NSString *fPath = [self.homePath stringByAppendingString:fromPath];
NSString *src = [fPath stringByAppendingPathComponent:fileName];
NSString *tPath = [self.homePath stringByAppendingString:toPath];
NSString *des = [tPath stringByAppendingPathComponent:fileName]; if (![self.manager fileExistsAtPath:src]) {
NSLog(@"文件不存在");
return NO;
}else {
if (![self.manager fileExistsAtPath:tPath]) {
NSLog(@"目标路径不存在");
return NO;
} else {
BOOL move = [self.manager moveItemAtPath:src toPath:des error:nil];
if (move) {
NSLog( @"移动成功");
return YES;
} else {
NSLog(@"移动失败");
return NO;
}
}
}
return NO;
}

Objective-C NSFileManager的使用 各种文件操作的更多相关文章

  1. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

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

    NSFileManager文件操作的十个小功能 NSFileManager是一个单列类,也是一个文件管理器.可以通过NSFileManager创建文件夹.创建文件.写文件.读文件内容等等基本功能. 下 ...

  3. iOS——文件操作NSFileManager (创建、删除,复制,粘贴)

    iOS——文件操作NSFileManager (创建.删除,复制,粘贴)       iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视 ...

  4. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  5. iOS 沙盒(sandbox)机制和文件操作

    本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...

  6. IOS学习之IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...

  7. iOS - 文件操作(File Operating)

    1. 沙盒 & NSData /*_______________________________获取沙盒路径_________________________________________* ...

  8. iOS的沙箱目录和文件操作

    一.沙箱 iOS的每一个应用程序都有自己的目录来存放数据,这个目录称为沙箱目录.沙箱目录是一种数据安全策略,它设计的原理是只能允许自己的应用访问目录,而不允许其他的应用访问,这样可以保证数据的安全,应 ...

  9. 读写应用程序数据-NSUserDefault、对象归档(NSKeyedArchiver)、文件操作

    ios中数据持久化存储方式一般有5种:NSUserDefault.对象归档(NSKeyedArchiver).文件操作.数据库存储(SQLite3).CoreData. 1.NSUserDefault ...

随机推荐

  1. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  2. 总结·CSS3中定位模型之position属性的使用方法

    一.position元素介绍 position属性规定了元素的定位类型,通过定位,可准确地定义元素相对于其正常位置而应该出现的位置,或者是相对于父元素.另一元素和浏览器窗口等的位置. position ...

  3. 解决arcgis javascript textsymbol不支持多行文本标注的问题

    首先,下载这段js文件,命名为esri.symbol.MultiLineTextSymbol.js require(["esri/layers/LabelLayer"], func ...

  4. Java IO学习笔记四

    内存操作流 之前的所有的流操作都是针对文件的,但是有时候只是想要实现数据间转换,此时如果我们想要创建一个文件然后再删除文件,那样显得有点麻烦,因此此时的内存操作流就显得很适合这类的操作,因为它只是在内 ...

  5. 出位的template.js 基于jquery的模板渲染插件

    找了好几款基于jquery的模板渲染插件,无一感觉很难用(教程较少.绑定不统一),也可能我智商问题,比如jquery template.js .jtemplate.js. 然后在github上找到这一 ...

  6. arcgis api for js入门开发系列十二地图打印(GP服务)

    上一篇实现了demo的地图统计图,本篇新增地图打印,截图如下: (1)地图打印实现的思路如下:首先在创建好地图打印GP模型,设置好模型的参数:其次是验证模型运行模型:然后是发布地图打印的GP服务:最后 ...

  7. JS如何实现真正的对象常量

    前言 众所周知ES6新增的const关键字可以用来声明常量,但是它只对基本数据类型生效(Number.String.Boolean等),那如果我们想声明一个常量对象呢?该如何实现,Object内置对象 ...

  8. 并归排序 (Java版本,时间复杂度为O(n))

    自己上网查了一下并归排序的定义,把两个排序好的数组重新组成一个排序好的数组就是并归排序, 实现的方式有和多种,自己思考了一下,用java实现了一版本,思路如下,既然是排序好的,只需要依次比较两个数组, ...

  9. nginx二级域名配置自动跳转到一级域名

    nginx二级域名配置自动跳转到一级域名 rewrite配置内容: if ($http_host !~ "^www.aaa.com$") { rewrite ^(.*) http: ...

  10. 「七天自制PHP框架」第四天:模型关联

    往期回顾:「七天自制PHP框架」第三天:PHP实现的设计模式,点击此处 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,欢迎关注:编程老头 前阵子在网 ...