基于NSString处理文件的高级类
基于NSString处理文件的高级类

我已经把处理文件的类简化到了变态的程度,如果你还有更简洁的方法,请告知我,谢谢!
使用详情:

源码:
//
// NSString+File.h
// MasterCode
//
// Created by YouXianMing on 14/11/28.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> @interface NSString (File) /**
* 沙盒文件路径
*
* /Documents
* /Library/Caches
* /Library/Preferences
* /tmp
*
* @return 沙盒文件路径
*/
- (NSString *)path; /**
* bundel文件路径
*
* @return bundel文件路径
*/
- (NSString *)bundleFile; /**
* bundle图片
*
* @return bundle图片
*/
- (UIImage *)bundleImage; /**
* 检测文件或者文件夹是否存在
*
* @return YES 存在, NO 不出在
*/
- (BOOL)exist; /**
* 创建文件夹
*
* @return YES 成功, NO 失败
*/
- (BOOL)createFolder; /**
* 是否是文件夹
*
* @return YES 是, NO 不是
*/
- (BOOL)isDirectory; /**
* 复制到这个路径
*
* @param path 目的路径
*
* @return YES 成功, NO 失败
*/
- (BOOL)copyTo:(NSString *)path; /**
* 移动到这个路径
*
* @param path 目的路径
*
* @return YES 成功, NO 失败
*/
- (BOOL)moveTo:(NSString *)path; /**
* 删除文件
*
* @return YES 成功, NO 失败
*/
- (BOOL)remove; /**
* 遍历出文件夹中的文件
*
* @return 所有文件夹路径
*/
- (NSArray *)enumeratorFolder; /**
* 遍历出文件夹并在block中查看
*
* @param block 可以查看path
*/
- (void)enumeratorFolderEach:(void (^)(NSString *path))block; /**
* 文件信息
*
* @return 文件信息
*/
- (NSDictionary *)fileInfo; /**
* 文件大小
*
* @return 文件大小
*/
- (int)fileSize; @end
//
// NSString+File.m
// MasterCode
//
// Created by YouXianMing on 14/11/28.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "NSString+File.h" @implementation NSString (File) - (NSString *)path {
return [NSHomeDirectory() stringByAppendingPathComponent:self];
} - (NSString *)bundleFile {
return [[NSBundle mainBundle] pathForResource:self
ofType:nil];
} - (UIImage *)bundleImage {
return [UIImage imageNamed:self];
} - (BOOL)exist {
return [[NSFileManager defaultManager] fileExistsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
isDirectory:nil];
} - (BOOL)createFolder {
return [[NSFileManager defaultManager] createDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
withIntermediateDirectories:YES
attributes:nil
error:nil];
} - (BOOL)isDirectory {
BOOL isDirectory = NO; [[NSFileManager defaultManager] fileExistsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
isDirectory:&isDirectory]; return isDirectory;
} - (BOOL)copyTo:(NSString *)path {
return [[NSFileManager defaultManager] copyItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
toPath:[NSHomeDirectory() stringByAppendingPathComponent:path]
error:nil];
} - (BOOL)moveTo:(NSString *)path {
return [[NSFileManager defaultManager] moveItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
toPath:[NSHomeDirectory() stringByAppendingPathComponent:path]
error:nil];
} - (BOOL)remove {
return [[NSFileManager defaultManager] removeItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
error:nil];
} - (NSArray *)enumeratorFolder {
if ([self isDirectory])
{
NSMutableArray *storeArray = [NSMutableArray array]; NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:self];
NSFileManager *localFileManager = [[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir]; NSString *file;
while ((file = [dirEnum nextObject]))
{
[storeArray addObject:[[NSHomeDirectory() stringByAppendingPathComponent:self] stringByAppendingPathComponent:file]];
} return storeArray;
}
else
{
return nil;
}
} - (void)enumeratorFolderEach:(void (^)(NSString *path))block {
if ([self isDirectory])
{
NSMutableArray *storeArray = [NSMutableArray array]; NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:self];
NSFileManager *localFileManager = [[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir]; NSString *file;
while ((file = [dirEnum nextObject]))
{
[storeArray addObject:[self stringByAppendingPathComponent:file]];
} [storeArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
block(obj);
}];
}
} - (NSDictionary *)fileInfo {
return [[NSFileManager defaultManager] attributesOfItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
error:nil];
} - (int)fileSize {
return [[[[NSFileManager defaultManager] attributesOfItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:self]
error:nil] \
objectForKey:@"NSFileSize"] intValue];
} @end
基于NSString处理文件的高级类的更多相关文章
- iOS开发拓展篇—封装音频文件播放工具类
iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...
- 使用CodeSmith快速生成映射文件和映射类
一 CodeSmith简介 本文以表自动生成NHibernate的映射文件和映射类的实例来说明一下本软件的使用方法. CodeSmith是一种基于模板的代码生成工具,其使用类似于ASP.NET的语法来 ...
- Java:基于MD5的文件监听程序
前述和需求说明 和之前写的 Python:基于MD5的文件监听程序 是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的.代码已上传Gi ...
- 使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form
使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form 开发环境: Wing IDE 6.1 步骤1: 打开 Wing IDE,创建一个新的 pr ...
- 文件流FileStram类
本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- hibernate 的映射文件快速生成:使用CodeSmith快速生成映射文件和映射类
一 CodeSmith简介 本文以表自动生成NHibernate的映射文件和映射类的实例来说明一下本软件的使用方法. CodeSmith是一种基于模板的代码生成工具,其使用类似于ASP.NET的语法来 ...
- 【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待
[等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可 ...
- scrapy的大文件下载(基于一种形式的管道类实现)
scrapy的大文件下载(基于一种形式的管道类实现) 爬虫类中将解析到的图片地址存储到item,将item提交给指定的管道 在管道文件中导包:from scrapy.pipelines.images ...
随机推荐
- 6-nginx-会话一致性解决(sesion一致)
由于tomcat使用的为集群, 通过nginx访问时轮询不同的tomcat, 使得session无法统一, 所以将session单独抽取出来做共享session. 此tomcat版本为 7.0.61. ...
- Nginx(一)安装及启停
目录 1 nginx安装 2 nginx启停 我发现很多博客排版杂乱,表达不清,读者看了往往云里雾里.我此前的博客也是如此,我自己很不满意.今起,每一篇博客都会用心写,此前的博客我也会尽力修改.至少要 ...
- 高云的jQuery源码分析笔记
(function( window, undefined ) { // 构造jQuery对象 var jQuery = function( selector, context ) { return n ...
- BG.Hadoop.Master
1. 安装JDK JDK安装包复制到/opt文件夹 cd /opt rpm -ivh jdk-8u121-linux-x64.rpm vim /etc/profile 增加 JAVA_HOME=/us ...
- mongodb int型id 自增
mongo的c#客户端提供了接口IIdGenerator,有guid和objectid等几种实现,但没有int型id的实现 接口主要2个方法,一个IsEmpty返回bool,判断当前id值是否是空(估 ...
- java SE 入门之运算符(第三篇)
在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符.关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符). 我们一起来学习下吧! 一.赋值运算符 赋值运算符主要有五个.分别是 ...
- SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...
- Resharper 使用帮助-自动生成文件头
VS2012 安装完resharper 后,在resharper选项中选择 Code Editing – File Header Text . 输入自定义的文件头格式.如果需要在文件头外层添加regi ...
- 大话JVM(一):垃圾收集算法
系列介绍|本系列主要是记录学习jvm过程中觉得重要的内容,方便以后复习 在说垃圾收集算法之前,先要说一下垃圾收集,从大的讲,垃圾收集需要考虑三件事情: 1.哪些内存需要回收 2.什么时候回收 3.如 ...
- ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
在ASP.NET MVC中,视图数据可以通过ViewBag.ViewData.TempData来访问,其中ViewBag 是动态类型(Dynamic),ViewData 是一个字典型的(Diction ...