基于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:selfofType: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:YESattributes:nilerror: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

转载于:https://www.cnblogs.com/YouXianMing/p/4129168.html

基于NSString处理文件的高级类相关推荐

  1. 基于POI的读写Excel文件的工具类

    依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...

  2. 基于Socket的文件传输(使用CSocket类)

    本软件使用MFC采用面向对象的方法实现了基于Socket的文件传输.这是原来研究生课程的结课作业,实现了Socket的发送和接收,以及读取ini配置文件等操作.使用了CSocket类 以下是当时结课作 ...

  3. 基于 Thingsboard 平台自定义 RPC 控制类小部件示例

    基于 Thingsboard 平台自定义 RPC 控制类小部件示例 1. 小部件介绍 2. 创建小部件 3. 部件编辑器 3.1 简介 3.2 资源 / HTML / CSS 3.3 JavaScri ...

  4. 文件映射操作类的实现

    文章目录 1 文件映射操作类的实现 1 文件映射操作类的实现 mmap_file_op.h: #ifndef QINIU_LARGEFILE_MMAPFILE_OP_H_ #define QINIU_ ...

  5. 快速生成NHibernate的映射文件和映射类的利器 —— codesmith软件

    1.     Codesmith软件简介 (1) Codesmith软件是一种基于模板的代码生成工具,在ORM中,它能帮助我们生成实体类.XML配置文件,从而简化了我们一部分的开发工作,它的使用类似于 ...

  6. 基于AFNetworking的封装的工具类

    基于AFNetworking的封装的工具类MXERequestService // // MXERequestService.h // testAFNetWorking // // Created b ...

  7. linux 查找文件夹_用python打造一个基于socket的文件(夹)传输系统

    这段时间在学习python,接触到了网络编程中的socket这块,加上自己在用的Linux服务器都是原生支持python的,于是乎有了个做文件传输功能程序的想法. 毕竟python语言中,有下载功能的 ...

  8. Laravel5中基于jQuery实现分层级的类目树结构方法

    2019独角兽企业重金招聘Python工程师标准>>> Laravel5中基于jQuery实现分层级的类目树结构方法 下面时间财富网小编们来了解一下关于Laravel 5 中基于 j ...

  9. 基于springboot的文件上传功能的实现

    基于springboot的文件上传功能的实现: 前言:本人是刚学习java后端不久,所以通过记录一下平时所学知识,方便日后的复习,如果有出错的地方,还望包含. 1.使用的工具是idea,和spring ...

最新文章

  1. jQuery 图片剪裁插件初探之 Jcrop
  2. linux中的定时,linux中的定时任务
  3. 【Java框架】 Hibernate与Mybatis对比
  4. BIO-NIO-AIO
  5. java 旋转图片_Java实现图片翻转以及任意角度旋转
  6. Yarn的资源调度与隔离
  7. Windows 7下的Excel 2010同时打开多个独立的窗口
  8. SpringBoot文件上传异常之提示The temporary upload location xxx is not valid
  9. 模块调用时对参数值的更改
  10. Castle IOC容器构建配置详解(二)
  11. zngnqfxtuubuosmo
  12. 国军标GJB150三防试验(霉菌+盐雾+湿热)
  13. linux 忘记了密码,Linux忘记密码的解救方法
  14. dialog 弹窗关闭事件
  15. webview 边距_如何使用javascript删除Android webview中的内置边距
  16. 数据库设计各阶段任务
  17. 单片空间后方交会程序c语言,摄影测量实习报告-单片空间后方交会
  18. TVM: End-to-End Optimization Stack for Deep Learning
  19. MBA提前面试:商学院看重软实力
  20. 如何用python更改图片的像素

热门文章

  1. aes ios php,AES算法在PHP和Android和iOS上有所不同
  2. 30秒的PHP代码片段(1)数组 - Array
  3. 构建第一个Spring Boot2.0应用之集成dubbo上---环境搭建(九)
  4. ****** 四 ******、软设笔记【数据结构】-排序、插入排序、选择排序
  5. 【spring】spring的事务传播性 hibernate/jpa等的事务隔离性
  6. bzoj1625[Usaco2007 Dec]宝石手镯*
  7. php 生日提醒程序
  8. 使用tensorflow object detection API 训练自己的目标检测模型 (二)labelImg的安装配置过程
  9. paramiko上传下载
  10. Final Cut Pro X中如何使音视频片段能够自由拖动