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 ...
随机推荐
- java加密算法入门(二)-对称加密详解
1.简单介绍 什么是对称加密算法? 对称加密算法即,加密和解密使用相同密钥的算法. 优缺点: 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证 ...
- 快来领取一场专门讲解UTF-8与UTF-16编码算法的GitChat活动的免费名额
微信扫一扫,可打开该GitChat活动页面 字符编码是计算机世界里最基础.最重要.最令人困惑的一个主题之一.不过,在计算机教材中却往往浮光掠影般地草草带过,甚至连一本专门进行深入介绍的专著都找不到(对 ...
- Hadoop和MapReduce初识
我们生活在大数据时代!!!微博.微信.云存储等大数据的需求,Hadoop由此诞生. 以下面部分数据为例: 1)Facebook存储着约100亿张照片,约1PB存储容量: 2)纽约证券交易所每天产生1T ...
- MySQL5.7绿色版(免装版)的初始化和修改密码
1.下载MySQL5.7.18绿色版 1.1下载链接 以下是MySQL5.7.18绿色版的链接(来源oracle官网),打开链接直接下载 https://dev.mysql.com/gt/Downlo ...
- LINUX centos 7.2/7.3 搭建LANP环境
首先我们先查看下centos的版本信息 #适用于所有的linux lsb_release -a #或者 cat /etc/redhat-release #又或者 rpm -q centos-relea ...
- 下载旧版chrome
问题描述: xp只能使用chrome 49及其之前的版本,去哪里下载? 解决办法: 1. 在这里 http://www.slimjet.com/chrome/google-chrome-old-ver ...
- Jquery页面滚动动态加载数据,页面下拉自动加载内容
<!DOCTYPE=html> <html> <head> <script src="js/jquery.js" type="t ...
- Ubutnu16.04安装pytorch
1.下载Anaconda3 首先需要去Anaconda官网下载最新版本Anaconda3(https://www.continuum.io/downloads),我下载是是带有python3.6的An ...
- ecshop的aes加密(封装)
从一家做shopex,ecstore的公司到一家做b2b的ecshop的公司...来了就要实战,其他的不说了,先来了解什么是php的aes加密吧? aes(高级加密标准),AES的区块长度固定为128 ...
- Web.config 自动替换值
开发项目中,有些可能会改变的值,如是否记录日志,记录日志路径等,我们都会配置在Web.config的<appSettings></appSettings>节点, 也比如数据库的 ...