iOS文件处理类
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文件处理类的更多相关文章
- C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭
迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- C++的IO处理中的头文件以及类理解(2)<sstream>头文件
C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...
- IOS上传图片方法类
IOS上传图片方法类 iPhone开发中遇到上传图片问题,找到多资料,最终封装了一个类,请大家指点,代码如下 // // RequestPostUploadHelper.h // demodes ...
- IOS 文件夹结构
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/MyGameZone/article/details/24494765 IOS文件夹结构 说明 这些仅 ...
- php 文件日志类
php文件日志类,按年月日组织目录结构. <?php class FileLog { private $_filepath; //文件路径 private $_filename; //日志文件名 ...
- C++文件流类与文件流对象
文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...
- 使用Java的多线程和IO流写一个文件复制功能类
创建一个复制功能类,继承Thread类,重写run()方法,把FileInputStream和FileOutputStream输入输出流写在run()方法内.示例代码如下: import java.i ...
- Code片段 : .properties属性文件操作工具类 & JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...
随机推荐
- mysql编码不统一形成的错误
错误提示:[Err]1267 - Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) ...
- ubuntu 18 常用软件安装
主要内容 1.安装 Ubuntu 18.04 LTS 2.安装 Google Chrome 3.安装 OpenVPN Client 4.安装 Docker CE 5.安装 MySQL Server 转 ...
- 理解session和cookie
Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的.例如,使用 Cookie ...
- ADT安装Genymotion的eclipse插件安装及错误解决办法
接触安卓开发也有很长一段时间了,但是一直使用的真机测试程序,因为感觉android模拟器实在是太不方便,运行慢,而且经常出错.最近听人介绍说Genymotion这款Android模拟器相当不错,于是打 ...
- opensuse13.1 安装chrome报 error while loading shared libraries:libudev.so.0:cannot open shared object file:no file or directory
1 opensuse13.1 安装chrome时 先用rpm -ivh --test **.rpm 测试安装 安装上缺少的文件 2 但是安装测试通过 却不能启动 原因 缺少一个文件 libudev ...
- 【CSS】CSS Sprites (CSS 精灵) 技术
CSS Sprites CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不 ...
- unity下载资源存储-生成md5
IEnumerator GetText() { using (UnityWebRequest request = UnityWebRequest.Get("localhost:80/txt/ ...
- RabbitMQ小节
一.RabbitMQ简介 RabbitQM是一款应用程序对应用程序的通讯方法,基于AMQP协议,用Erlang语言开发,因而安装环境配置之前需要首先安装Erlang语言环境.通过客户端发送消息到队列消 ...
- 使用Charles为Android设备抓取https请求的包
之前开发的Android APP使用的都是http请求,之后改成了https,就出现了以下情况,无法正常读取抓取的内容 找了好多资料说法大概差不多,照着弄,结果出现如下情况,后来发现这种情况其实是手机 ...
- ASP.NET Web API根据代码注释生成Help文档
使用Visual Studio新建一个ASP.NET Web API项目,直接运行,查看Help文档可以看到如下的API帮助说明 如何在Description中显示描述. 1. 打开Controlle ...