基于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 ...
随机推荐
- springboot-10-前端页面整合, thymeleaf, freemarker, jsp 模板使用
springboot 中不建议使用jsp作为页面展示, 怎么使用可以看: http://412887952-qq-com.iteye.com/blog/2292471 关于什么是thymeleaf, ...
- SpringCloud源码解读
http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- kmean算法C++实现
kmean均值算法是一种最常见的聚类算法.算法实现简单,效果也比较好.kmean算法把n个对象划分成指定的k个簇,每个簇中所有对象的均值的平均值为该簇的聚点(中心). k均值算法有如下五个步骤: 随机 ...
- Rails中实现批量删除
在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action.批量删除的效果图如下:
- C# 在同一个项目里启动不同的类文件
比如有两个类文件分别为 Person.cs 和 Enum.cs : using System; using person; namespace HelloWorld { class HelloWorl ...
- Golang cron 定时任务使用
1.cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解.linux 中可以通过 crontab -e 来配置定时任务.不过,linux 中的 cron 只能精确到分钟.而我们这 ...
- Behave step matcher
behave 提供3中step匹配模式 'parse' 'cfparse' 基于parse的扩展, 支持cardinality field syntax? 're' 支持在step中定义正则表达式 ...
- [转]File uploads in ASP.NET Core
本文转自:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads By Steve Smith ASP.NET MVC ...
- How to update Ionic cli and libraries
1)npm outdated 2)手动修改你项目的package.json文件,找对应的版本号 3)npm update 重新安装包就可以了. 转自:http://devfanaticblog.com ...
- GetHashCode方法学习
GetHashCode方法我的理解是做两个对象的比较,每个对象,不管是值类型还是应用类型都提供这个基本函数,都可以去重写它.GetHashTable通常用于HashTable.List<> ...