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. ORA-24247:网络访问被访问控制列表(ACL)拒绝

    今天将一个发送数据库监控邮件的procedure 从10g 迁移到11g,不工作了.处理记录如下: 在Oracle11g中,Oracle在安全方面有了很多的改进,而在网络权限控制方面,也有一个新的概念 ...

  2. APP开发的三种技术对比

    目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...

  3. Shell输出颜色设置

    echo的三个参数 -E  关闭转义(默认) -e  识别转义 -n  不自动输出换行符 Shell识别颜色参数 \033[cor_id1;cor_id2;...]m       \033和\e是相同 ...

  4. xamarin RunOnUiThread

    One of the keys to maintaining a responsive GUI is to do long-running tasks on a background thread s ...

  5. 在Eclipse添加Android兼容包( v4、v7 appcompat )[转]

    昨天添加Android兼容包,碰到了很多问题,在这里记录一下,让后面的路好走. 如何选择兼容包, 请参考Android Support Library Features(二) 一.下载Support ...

  6. Ubuntu安装Python的mysqlclient

    介绍 本人想在Ubuntu上开发Python程序,使用MySQL数据库. 安装环境: Ubuntu14.04 安装MySQL数据库 具体步骤如下: apt-get update apt-get ins ...

  7. webpack的学习感悟

    https://github.com/webpack/webpack    webpack gethub地址. http://webpack.github.io/   webpack 官网 前言 we ...

  8. (转)The remote certificate is invalid according to the validation procedure

    If you get “The remote certificate is invalid according to the validation procedure” exception while ...

  9. java读取txt文件,对字符串进行操作后导出txt文件

    嘿嘿,代码略为简单,不再多做解释,直接上码! package org.lq.com.util; import java.io.File; import java.io.InputStreamReade ...

  10. css之子元素获取(未定义高度)父元素的高度

    你可能碰到过这样的需求,一个高度不固定的区域(内容由用户创造),当鼠标经过该区域或者其神马操作时,需要出现一个与该区域一样大的模版: 我们用一个span来处理这个mask.由于 .sample-1 和 ...