所有方法

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

//创建文件夹
- (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. html逻辑运算符

    逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑. 给定 x=6 以及 y=3,下表解释了逻辑运算符: &&and(x < 10 && y > 1) 为 t ...

  2. JavaScript数组基础及实例

    js数组 和var i=1;这样的简单存储一样是js中的一种数据结构,是专门用来存储多个数据的一种数据结构. 摘:数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内 ...

  3. js中年份、月份下拉框

    <select id="year" style="width: 100px;"></select> <select id=&quo ...

  4. js删除 object中的空值

    var data = { a: 'a', b: '' } 删除 b和''的配对, /** * Delete all null (or undefined) properties from an obj ...

  5. 蜘蛛大战之 站点LOGO(SEO)

    起因: 同事让我看 搜公司名称,百度第一位并没有出现公司网址,是别人的,然后我 惊奇的发现,站点logo 竟然 抓了张 无关紧要的图片,从此 变开始了 为期 10天+的战争: 经过: [2017-06 ...

  6. pythonic-让python代码更高效

    何为pythonic? pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等. 我的理解为,很+名词表达了一种特殊和强调的意味.所以很 ...

  7. Haoop MapReduce 的Partition和reduce端的二次排序

    先贴一张原理图(摘自hadoop权威指南第三版) 实际中看了半天还是不太理解其中的Partition,和reduce端的二次排序,最终根据实验来结果来验证自己的理解 1eg 数据如下 20140101 ...

  8. LogMiner的使用

    LogMiner是用于Oracle日志挖掘的利器. 百科解释: LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归 ...

  9. Swift字符串插值

    字符串插值是一种全新的构建字符串的方式,可以在其中包含常量.变量.字面量和表达式.您插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号中: let multiplier = let messa ...

  10. js判断一个数组是否为空

    var s = []; if(s.length == 0){ alert('空数组'); }