iOS文件处理类

这是一个用来简化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

判断这个沙盒中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.

iOS文件处理类的更多相关文章

  1. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  2. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  3. C++的IO处理中的头文件以及类理解(2)<sstream>头文件

    C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...

  4. IOS上传图片方法类

    IOS上传图片方法类   iPhone开发中遇到上传图片问题,找到多资料,最终封装了一个类,请大家指点,代码如下 // // RequestPostUploadHelper.h // demodes ...

  5. IOS 文件夹结构

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/MyGameZone/article/details/24494765 IOS文件夹结构 说明 这些仅 ...

  6. php 文件日志类

    php文件日志类,按年月日组织目录结构. <?php class FileLog { private $_filepath; //文件路径 private $_filename; //日志文件名 ...

  7. C++文件流类与文件流对象

    文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...

  8. 使用Java的多线程和IO流写一个文件复制功能类

    创建一个复制功能类,继承Thread类,重写run()方法,把FileInputStream和FileOutputStream输入输出流写在run()方法内.示例代码如下: import java.i ...

  9. Code片段 : .properties属性文件操作工具类 & JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...

随机推荐

  1. CoreJava笔记之JavaBean、静态方法static和final

    记住两句话: 1.属性是静态绑定到变量类型: 2.方法是动态绑定,由最终对象的方法决定 =============================== 关于JavaBean: 1.不是语法规则,是习惯 ...

  2. eclipse中修改tomcat的配置,解决全局性的get提交乱码问题

    在项目中如果页面提交方式为get的时候,中文会出现乱码. 为了解决乱码问题我们有两种办法. 第一种:在程序中加入get提交乱码的解决 String username = new String(user ...

  3. css消除空白节点的方法

    在做配置页面的时候,出现一个现在现象,两个同样的div(外框尺寸也是一样的),div里面包含有三个小的div ,三个小的div宽度也是一样的,同为33.3%,但是出现奇怪现象的就是左边一个有滚动条,右 ...

  4. C#中的不可空类型转为可空类型

    默认下,C#只有两种类型: 1. 可空类型:(是指可为null) 大部分的对象, 如: Dog dog = null; 2. 不可空类型: 基本值类型,布尔类型等,如: int a = 0 ;//正确 ...

  5. PHP多维数据排序(不区分大小字母)

    1. PHP中最普通的数组排序方法 sort(); 看个例子: <?php $test = array(); $test[] = 'ABCD'; $test[] = 'aaaa'; $test[ ...

  6. isPrototypeOf、instanceof、hasOwnProperty函数整理

    isPrototypeOf 作用:检测一个对象是否是另一个对象的原型.或者说一个对象是否被包含在另一个对象的原型链中 var p = {x:1};//定义一个原型对象 var o = Object.c ...

  7. 一:Shiro知识整理

    一:springboot快速入门: 1.建立Maven项目,导入springboot父工程 <!-- 继承springboot默认父工程 --> <parent> <gr ...

  8. 梯度寻优与logistic算法

    一.一些基本概念 最优化:在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优.高中学过的线性规划就是一类典型的最优化问题. 凸集:在集合空间中,凸集就是一个向四周凸起的图形.用数学 ...

  9. poj Corn Fields 状态压缩dp。

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5763   Accepted: 3052 Descr ...

  10. 为My97DatePicker日期插件设置默认日期

    datepicker.zip 为My97DatePicker日期插件设置默认日期,开始日期为系统日期的前一个月,结束日期为系统日期: 开始日期不能大于结束日期,且都不能大于今天: 开始日期-maxDa ...