博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS文件处理类
阅读量:4315 次
发布时间:2019-06-06

本文共 7972 字,大约阅读时间需要 26 分钟。

iOS文件处理类

这是一个用来简化iOS中关于文件操作的一个类,所有方法都为类方法.

 

Source

File.h

////  File.h//  FileManager////  http://home.cnblogs.com/u/YouXianMing/////  Copyright (c) 2014年 YouXianMing All rights reserved.//#import 
#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

判断这个沙盒中Documents目录下的一个文本文件YouXianMing.txt是否存在

判断沙盒中Documents目录下的一个文本文件YouXianMing.txt是否为一个文件

沙盒中Documents目录下的一个文本文件YouXianMing.txt的大小

读取/Library/Preferences目录下的一个字典类型的plist文件YouXianMing.plist

在沙盒根目录下创建文件夹层级结构/A/B/C

将根目录下的A文件夹以及子文件夹拷贝到Documents下的A文件夹当中

将集合(数组或者字典)写到/Library/Preferences下的tmp.plist当中

读取/Library/Preferences目录下的tmp.plist,修改其中的一个值并保存

没举例子的自己试一下就知道了.

so easy :) enjoy it.

 

 

转载于:https://www.cnblogs.com/YouXianMing/p/3711758.html

你可能感兴趣的文章
剑指Offer——替换空格
查看>>
剑指Offer——数据流中的中位数
查看>>
python模拟用户登录爬取阳光采购平台数据
查看>>
linux 发现交换文件 ".swp"
查看>>
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
查看>>
ACM学习历程——POJ3295 Tautology(搜索,二叉树)
查看>>
51nod 1295 XOR key-区间异或最大值-可持久化01Trie树(模板)
查看>>
Object-C-自定义类型归档
查看>>
mysql主从不同步问题 Error_code: 1032
查看>>
josephus(约瑟夫)问题
查看>>
类型“Observable<Response>”上不存在属性“map”
查看>>
bzoj 3874: [Ahoi2014]宅男计划
查看>>
css笔记16:盒子模型的入门案例
查看>>
Android 开发工具使用过程中要注意的问题
查看>>
阿里巴巴电话面试记录(他人的)
查看>>
算法竞赛之排序算法初入门
查看>>
怎样的一个程序员
查看>>
什么是上下文(Context)???
查看>>
java 实现https请求的基本原理与介绍(1)
查看>>
XSS安全漏洞解决办法后记
查看>>