基于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 ...
随机推荐
- Nginx反向代理实现会话(session)保持的两种方式 (转)
http://blog.csdn.net/gaoqiao1988/article/details/53390352 一.ip_hash: ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同 ...
- 【转】Spring事务异常回滚,捕获异常不抛出就不会回滚
最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了....... 为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异 ...
- 悟空模式-java-单例模式
[那座山,正当顶上,有一块仙石.其石有三丈六尺五寸高,有二丈四尺围圆.三丈六尺五寸高,按周天三百六十五度:二丈四尺围圆,按政历二十四气.上有九窍八孔,按九宫八卦.四面更无树木遮阴,左右倒有芝兰相衬.盖 ...
- js this问题和es6箭头函数this问题
JS中this的四种用法 1.在一般函数方法中使用 this 指代全局对象 function test(){ this.x = 1; alert(this.x); } test(); //1 2.作为 ...
- c#设计模式·结构型模式
看的过程中,发现好多模式都用过,只是没有总结,或者是不知道叫这个名字吧··· 这里列举结构型模式,适配器.桥接.过滤.组合.装饰器.外观.享元.代理, 适配器模式:将现存的对象放到新的环境里边去,但是 ...
- Code Signal_练习题_commonCharacterCount
Given two strings, find the number of common characters between them. Example For s1 = "aabcc&q ...
- Servlet自动注入Spring容器中的Bean解决方法
很多情况在进行Web开发的时候需要自己手写Servlet来完成某些功能,而servlet有需要注入Spring容器中的某些bean,这是每次都要手动获取比较麻烦,这里有一个解决方案,只需要写一个ser ...
- 高斯消元与期望DP
高斯消元可以解决一系列DP序混乱的无向图上(期望)DP DP序 DP序是一道DP的所有状态的一个排列,使状态x所需的所有前置状态都位于状态x前: (通俗的说,在一个状态转移方程中‘=’左侧的状态应该在 ...
- Vue2入门路线及资源
前言:最近在学习Vue,感觉对vue+vuex+vue-router算是小小地入门了.想起前期最苦恼也是最费时的事,就是在每个阶段找到合适当前水平的资源或者demo,所以本文我根据我自己的体验,整理了 ...
- 【代码笔记】iOS-cell自动变化大小
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...