Objective-C NSFileManager的使用 各种文件操作
所有方法
都很简单,大概记录一下,写文件并没有是追加的方式而是简单的覆盖
//创建文件夹
- (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的使用 各种文件操作的更多相关文章
- 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...
- NSFileManager文件操作的十个小功能
NSFileManager文件操作的十个小功能 NSFileManager是一个单列类,也是一个文件管理器.可以通过NSFileManager创建文件夹.创建文件.写文件.读文件内容等等基本功能. 下 ...
- iOS——文件操作NSFileManager (创建、删除,复制,粘贴)
iOS——文件操作NSFileManager (创建.删除,复制,粘贴) iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- iOS 沙盒(sandbox)机制和文件操作
本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...
- IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...
- iOS - 文件操作(File Operating)
1. 沙盒 & NSData /*_______________________________获取沙盒路径_________________________________________* ...
- iOS的沙箱目录和文件操作
一.沙箱 iOS的每一个应用程序都有自己的目录来存放数据,这个目录称为沙箱目录.沙箱目录是一种数据安全策略,它设计的原理是只能允许自己的应用访问目录,而不允许其他的应用访问,这样可以保证数据的安全,应 ...
- 读写应用程序数据-NSUserDefault、对象归档(NSKeyedArchiver)、文件操作
ios中数据持久化存储方式一般有5种:NSUserDefault.对象归档(NSKeyedArchiver).文件操作.数据库存储(SQLite3).CoreData. 1.NSUserDefault ...
随机推荐
- javaWEB之Servlet
Servlet 1. 什么是Servlet * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener) * Servlet是用来处理客户端请求的动态资源 * ...
- datatables 学习笔记1 基础篇
本文共3部分:基本使用|遇到的问题|属性表 1.DataTables的默认配置 $(document).ready(function() { $('#example').dataTable(); } ...
- angular.js的ng-app 指令定义一个 AngularJS 应用程序。
<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UT ...
- HttpWebRequest操作已超时
最近我们使用.NET3.5HttpWebRequest会报操作已超时但使用.NET4.0版本及以上却可以正常访问. 一段简单的代码如下: string returnData = "" ...
- python 遍历列表 list
names=['a','b',['aha',[['lucy','lily']]] 遍历这个列表 def print_list(this_list); for name in this_list: if ...
- PS-前端切图教程(切jpg图和切png图)
微微一运功,把家底都抖出来了. 不过,作为一个设计出身的前端来说,摸ps就和摸键盘一样了 所以可能教程中还是有没用过ps的人看不懂的地方, 欢迎加群讨论:613512106... ---------- ...
- .Net上传文件大小配置
1.起因 今天同事在上传文件的时候,发现一直失败,说文件比较大.一听就明白了,肯定是上传文件大小的问题啊.然后查看web.config文件,发现设置过文件上传的大小限制.配置文件上传大小,分为2部分. ...
- django-xadmin ModelAdmin中定义object_list_template无效的问题
环境:https://github.com/y2kconnect/xadmin-for-python3.git python3.5.2 django1.9.12 object_list_templat ...
- 【原创】Kafka 0.11消息设计
Kafka 0.11版本增加了很多新功能,包括支持事务.精确一次处理语义和幂等producer等,而实现这些新功能的前提就是要提供支持这些功能的新版本消息格式,同时也要维护与老版本的兼容性.本文将详细 ...
- Java虚拟机面试重点-------------内存分配和回收策略
1 对象优先分配在Eden区 对象优先在Eden进行分配,大多数情况下,对象在新生代Eden区进行分配.当Eden区没有足够的空间进行分配时,虚拟机会发起一次Minor GC. 新生代GC(Ninor ...