iOS文件处理类
2014-05-06 16:02
204 查看
iOS文件处理类
![](http://images.cnitblog.com/i/607542/201405/061535511821266.gif)
这是一个用来简化iOS中关于文件操作的一个类,所有方法都为类方法.
Source
File.h
File.m
Usage
获取沙盒中Documents目录下的一个文本文件YouXianMing.txt
![](http://images.cnitblog.com/i/607542/201405/061542449326002.png)
判断这个沙盒中Documents目录下的一个文本文件YouXianMing.txt是否存在
![](http://images.cnitblog.com/i/607542/201405/061543469639920.png)
判断沙盒中Documents目录下的一个文本文件YouXianMing.txt是否为一个文件
![](http://images.cnitblog.com/i/607542/201405/061544484487036.png)
沙盒中Documents目录下的一个文本文件YouXianMing.txt的大小
![](http://images.cnitblog.com/i/607542/201405/061545425734605.png)
读取/Library/Preferences目录下的一个字典类型的plist文件YouXianMing.plist
![](http://images.cnitblog.com/i/607542/201405/061547487767827.png)
在沙盒根目录下创建文件夹层级结构/A/B/C
![](http://images.cnitblog.com/i/607542/201405/061549586674709.png)
将根目录下的A文件夹以及子文件夹拷贝到Documents下的A文件夹当中
![](http://images.cnitblog.com/i/607542/201405/061554152133587.png)
将集合(数组或者字典)写到/Library/Preferences下的tmp.plist当中
![](http://images.cnitblog.com/i/607542/201405/061556437297925.png)
读取/Library/Preferences目录下的tmp.plist,修改其中的一个值并保存
![](http://images.cnitblog.com/i/607542/201405/061559031986700.png)
没举例子的自己试一下就知道了.
so easy :) enjoy it.
![](http://images.cnitblog.com/i/607542/201405/061535511821266.gif)
这是一个用来简化iOS中关于文件操作的一个类,所有方法都为类方法.
Source
File.h
// // File.h // FileManager // // http://home.cnblogs.com/u/YouXianMing/ // // Copyright (c) 2014年 YouXianMing All rights reserved. // #import <Foundation/Foundation.h> #define FILE_PATH(filePath) [File path:(filePath)] #define ROOT_PATH [File rootPath] #define BUNDLE_PATH(fileName) [File bundleSource:(fileName)] #define CREATE_FOLDER(folderPath) [File createFolder:(folderPath)] #define FILE_EXIST(filePath) [File exist:(filePath)] #define IS_DIRECTORY(filePath) [File isDirectory:(filePath)] #define IS_FILE(filePath) ![File isDirectory:(filePath)] #define FILE_INFO(filePath) [File fileInfo:(filePath)] #define FILE_SIZE(filePath) [File fileSize:(filePath)] #define FILE_DICTIONARY(filePath) [File dictionaryFrom:(filePath)] #define FILE_ARRAY(filePath) [File arrayFrom:(filePath)] @interface File : NSObject /* 注意:凡是参数为 filePath folderPath 的全部为相对路径,用以下字符串拼接使用 /Documents /Library/Caches /Library/Preferences /tmp 其他都为绝对路径 */ + (NSString *)rootPath; + (NSString *)bundleSource:(NSString *)fileName; + (NSString *)path:(NSString *)filePath; + (BOOL)createFolder:(NSString *)filePath; + (BOOL)exist:(NSString *)filePath; + (BOOL)isDirectory:(NSString *)filePath; + (NSDictionary *)fileInfo:(NSString *)filePath; + (int)fileSize:(NSString *)filePath; + (NSArray *)enumeratorFolder:(NSString *)folderPath; + (void)enumeratorFolder:(NSString *)folderPath each:(void (^)(NSString *path))each; + (BOOL)copyFrom:(NSString *)sourcePath to:(NSString *)targetPath; + (BOOL)moveFrom:(NSString *)sourcePath to:(NSString *)targetPath; + (BOOL)remove:(NSString *)targetPath; + (BOOL)writePlist:(id)plist to:(NSString *)filePath; + (NSMutableDictionary *)dictionaryFrom:(NSString *)filePath; + (NSMutableArray *)arrayFrom:(NSString *)filePath; + (void)path:(NSString *)filePath dictionary:(void (^)(NSMutableDictionary *dictionary))dictionary; + (void)path:(NSString *)filePath array:(void (^)(NSMutableArray *array))array; @end
File.m
// // File.m // FileManager // // http://home.cnblogs.com/u/YouXianMing/ // // Copyright (c) 2014年 YouXianMing All rights reserved. // #import "File.h" static NSString *_sandBoxPath = nil; @implementation File + (void)initialize { if (self == [File class]) { _sandBoxPath = NSHomeDirectory(); } } + (NSString *)rootPath { return _sandBoxPath; } + (NSString *)path:(NSString *)filePath { return [_sandBoxPath stringByAppendingPathComponent:filePath]; } + (BOOL)createFolder:(NSString *)filePath { return [[NSFileManager defaultManager] createDirectoryAtPath:[self path:filePath] withIntermediateDirectories:YES attributes:nil error:nil]; } + (NSString *)bundleSource:(NSString *)fileName { return [[NSBundle mainBundle] pathForResource:fileName ofType:nil]; } + (BOOL)exist:(NSString *)filePath { return [[NSFileManager defaultManager] fileExistsAtPath:[self path:filePath] isDirectory:NO]; } + (BOOL)isDirectory:(NSString *)filePath { BOOL isDirectory = NO; [[NSFileManager defaultManager] fileExistsAtPath:[self path:filePath] isDirectory:&isDirectory]; return isDirectory; } + (BOOL)copyFrom:(NSString *)sourcePath to:(NSString *)targetPath { return [[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:targetPath error:nil]; } + (BOOL)moveFrom:(NSString *)sourcePath to:(NSString *)targetPath { return [[NSFileManager defaultManager] moveItemAtPath:sourcePath toPath:targetPath error:nil]; } + (BOOL)remove:(NSString *)targetPath { return [[NSFileManager defaultManager] removeItemAtPath:targetPath error:nil]; } + (NSArray *)enumeratorFolder:(NSString *)folderPath { if ([self isDirectory:folderPath]) { NSMutableArray *storeArray = [NSMutableArray array]; NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:folderPath]; NSFileManager *localFileManager = [[NSFileManager alloc] init]; NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir]; NSString *file; while ((file = [dirEnum nextObject])) { [storeArray addObject:[folderPath stringByAppendingPathComponent:file]]; } return storeArray; } else { return nil; } } + (void)enumeratorFolder:(NSString *)folderPath each:(void (^)(NSString *path))each { if ([self isDirectory:folderPath]) { NSMutableArray *storeArray = [NSMutableArray array]; NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:folderPath]; NSFileManager *localFileManager = [[NSFileManager alloc] init]; NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir]; NSString *file; while ((file = [dirEnum nextObject])) { [storeArray addObject:[folderPath stringByAppendingPathComponent:file]]; } [storeArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { each(obj); }]; } } + (NSDictionary *)fileInfo:(NSString *)filePath { return [[NSFileManager defaultManager] attributesOfItemAtPath:[self path:filePath] error:nil]; } + (int)fileSize:(NSString *)filePath { return [[[[NSFileManager defaultManager] attributesOfItemAtPath:[self path:filePath] error:nil] \ objectForKey:@"NSFileSize"] intValue]; } + (BOOL)writePlist:(id)plist to:(NSString *)filePath { if ([plist isKindOfClass:[NSDictionary class]]) { NSDictionary *point = plist; return [point writeToFile:[self path:filePath] atomically:YES]; } else if ([plist isKindOfClass:[NSArray class]]) { NSArray *point = plist; return [point writeToFile:[self path:filePath] atomically:YES]; } else { return NO; } } + (NSMutableDictionary *)dictionaryFrom:(NSString *)filePath { NSMutableDictionary *dictionary = \ [[NSMutableDictionary alloc] initWithContentsOfFile:[self path:filePath]]; return dictionary; } + (NSMutableArray *)arrayFrom:(NSString *)filePath { NSMutableArray *array = \ [[NSMutableArray alloc] initWithContentsOfFile:[self path:filePath]]; return array; } + (void)path:(NSString *)filePath dictionary:(void (^)(NSMutableDictionary *dictionary))dictionary { NSMutableDictionary *sourceDictionary = \ [[NSMutableDictionary alloc] initWithContentsOfFile:[self path:filePath]]; dictionary(sourceDictionary); [sourceDictionary writeToFile:[self path:filePath] atomically:YES]; } + (void)path:(NSString *)filePath array:(void (^)(NSMutableArray *array))array { NSMutableArray *sourceArray = \ [[NSMutableArray alloc] initWithContentsOfFile:[self path:filePath]]; array(sourceArray); [sourceArray writeToFile:[self path:filePath] atomically:YES]; } @end
Usage
获取沙盒中Documents目录下的一个文本文件YouXianMing.txt
![](http://images.cnitblog.com/i/607542/201405/061542449326002.png)
判断这个沙盒中Documents目录下的一个文本文件YouXianMing.txt是否存在
![](http://images.cnitblog.com/i/607542/201405/061543469639920.png)
判断沙盒中Documents目录下的一个文本文件YouXianMing.txt是否为一个文件
![](http://images.cnitblog.com/i/607542/201405/061544484487036.png)
沙盒中Documents目录下的一个文本文件YouXianMing.txt的大小
![](http://images.cnitblog.com/i/607542/201405/061545425734605.png)
读取/Library/Preferences目录下的一个字典类型的plist文件YouXianMing.plist
![](http://images.cnitblog.com/i/607542/201405/061547487767827.png)
在沙盒根目录下创建文件夹层级结构/A/B/C
![](http://images.cnitblog.com/i/607542/201405/061549586674709.png)
将根目录下的A文件夹以及子文件夹拷贝到Documents下的A文件夹当中
![](http://images.cnitblog.com/i/607542/201405/061554152133587.png)
将集合(数组或者字典)写到/Library/Preferences下的tmp.plist当中
![](http://images.cnitblog.com/i/607542/201405/061556437297925.png)
读取/Library/Preferences目录下的tmp.plist,修改其中的一个值并保存
![](http://images.cnitblog.com/i/607542/201405/061559031986700.png)
没举例子的自己试一下就知道了.
so easy :) enjoy it.
相关文章推荐
- ios--笔记--浏览相册选择图片(或视频)
- ios-xml和json的解析
- [IOS] NSOutputStream向输出流写数据
- 使用Xcode和Instruments调试解决iOS内存泄露
- iOS 一个工程中引用其他工程时要注意Skip Install选项
- ios开发 - ios6 自动布局 1
- 新功用新猜测 XY苹果帮手解读ios8
- IOS iPhone 屏幕尺寸 判断设备屏幕尺寸、分辨率
- nagios监控windows主机
- iOS录音和播放
- iOS录音和播放
- iOS:日期 时间类操作 NSDate、calendar、formatter、components、locale、timeZone
- iOS被爆存在安全漏洞,邮箱附件无需使用密钥即可解密
- IOS 文件目录及NSUserDefaults浅谈
- iOS 程序图标Logo设置
- [IOS] NSInputStream从输入流里读入数据
- [IOS] streams概览
- ios新浪微博客户端
- iOS_07_流程控制
- iOS7初体验(2)——单元测试