zoukankan      html  css  js  c++  java
  • 封装读取文件路径的类File.h+File.m

     1 #import <Foundation/Foundation.h>
     2 
     3 #define FILE_PATH(filePath)       [File path:(filePath)]
     4 #define ROOT_PATH                 [File rootPath]
     5 #define BUNDLE_PATH(fileName)     [File bundleSource:(fileName)]
     6 #define CREATE_FOLDER(folderPath) [File createFolder:(folderPath)]
     7 #define FILE_EXIST(filePath)      [File exist:(filePath)]
     8 #define IS_DIRECTORY(filePath)    [File isDirectory:(filePath)]
     9 #define IS_FILE(filePath)         ![File isDirectory:(filePath)]
    10 #define FILE_INFO(filePath)       [File fileInfo:(filePath)]
    11 #define FILE_SIZE(filePath)       [File fileSize:(filePath)]
    12 #define FILE_DICTIONARY(filePath) [File dictionaryFrom:(filePath)]
    13 #define FILE_ARRAY(filePath)      [File arrayFrom:(filePath)]
    14 
    15 @interface File : NSObject
    16 
    17 /*
    18  注意:凡是参数为 filePath folderPath 的全部为相对路径,用以下字符串拼接使用
    19  
    20  /Documents
    21  /Library/Caches
    22  /Library/Preferences
    23  /tmp
    24  
    25  其他都为绝对路径
    26  */
    27 
    28 + (NSString *)rootPath;
    29 + (NSString *)bundleSource:(NSString *)fileName;
    30 + (NSString *)path:(NSString *)filePath;
    31 + (BOOL)createFolder:(NSString *)filePath;
    32 + (BOOL)exist:(NSString *)filePath;
    33 + (BOOL)isDirectory:(NSString *)filePath;
    34 + (NSDictionary *)fileInfo:(NSString *)filePath;
    35 + (int)fileSize:(NSString *)filePath;
    36 + (NSArray *)enumeratorFolder:(NSString *)folderPath;
    37 + (void)enumeratorFolder:(NSString *)folderPath each:(void (^)(NSString *path))each;
    38 
    39 + (BOOL)copyFrom:(NSString *)sourcePath to:(NSString *)targetPath;
    40 + (BOOL)moveFrom:(NSString *)sourcePath to:(NSString *)targetPath;
    41 + (BOOL)remove:(NSString *)targetPath;
    42 
    43 + (BOOL)writePlist:(id)plist to:(NSString *)filePath;
    44 + (NSMutableDictionary *)dictionaryFrom:(NSString *)filePath;
    45 + (NSMutableArray *)arrayFrom:(NSString *)filePath;
    46 + (void)path:(NSString *)filePath dictionary:(void (^)(NSMutableDictionary *dictionary))dictionary;
    47 + (void)path:(NSString *)filePath array:(void (^)(NSMutableArray *array))array;
    48 
    49 @end

    File.m代码如下:

      1 #import "File.h"
      2 
      3 static NSString *_sandBoxPath = nil;
      4 
      5 @implementation File
      6 
      7 + (void)initialize
      8 {
      9     if (self == [File class])
     10     {
     11         _sandBoxPath = NSHomeDirectory();
     12     }
     13 }
     14 
     15 + (NSString *)rootPath
     16 {
     17     return _sandBoxPath;
     18 }
     19 
     20 + (NSString *)path:(NSString *)filePath
     21 {
     22     return [_sandBoxPath stringByAppendingPathComponent:filePath];
     23 }
     24 
     25 + (BOOL)createFolder:(NSString *)filePath
     26 {
     27     return [[NSFileManager defaultManager] createDirectoryAtPath:[self path:filePath]
     28                                      withIntermediateDirectories:YES
     29                                                       attributes:nil
     30                                                            error:nil];
     31 }
     32 
     33 + (NSString *)bundleSource:(NSString *)fileName
     34 {
     35     return [[NSBundle mainBundle] pathForResource:fileName
     36                                            ofType:nil];
     37 }
     38 
     39 + (BOOL)exist:(NSString *)filePath
     40 {
     41     return [[NSFileManager defaultManager] fileExistsAtPath:[self path:filePath]
     42                                                 isDirectory:NO];
     43 }
     44 
     45 + (BOOL)isDirectory:(NSString *)filePath
     46 {
     47     BOOL isDirectory = NO;
     48     
     49     [[NSFileManager defaultManager] fileExistsAtPath:[self path:filePath]
     50                                          isDirectory:&isDirectory];
     51     
     52     return isDirectory;
     53 }
     54 
     55 + (BOOL)copyFrom:(NSString *)sourcePath to:(NSString *)targetPath
     56 {
     57     return [[NSFileManager defaultManager] copyItemAtPath:sourcePath
     58                                                    toPath:targetPath
     59                                                     error:nil];
     60 }
     61 
     62 + (BOOL)moveFrom:(NSString *)sourcePath to:(NSString *)targetPath
     63 {
     64     return [[NSFileManager defaultManager] moveItemAtPath:sourcePath
     65                                                    toPath:targetPath
     66                                                     error:nil];
     67 }
     68 
     69 + (BOOL)remove:(NSString *)targetPath
     70 {
     71     return [[NSFileManager defaultManager] removeItemAtPath:targetPath
     72                                                       error:nil];
     73 }
     74 
     75 + (NSArray *)enumeratorFolder:(NSString *)folderPath
     76 {
     77     if ([self isDirectory:folderPath])
     78     {
     79         NSMutableArray *storeArray = [NSMutableArray array];
     80         
     81         NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:folderPath];
     82         NSFileManager *localFileManager = [[NSFileManager alloc] init];
     83         NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir];
     84         
     85         NSString *file;
     86         while ((file = [dirEnum nextObject]))
     87         {
     88             [storeArray addObject:[folderPath stringByAppendingPathComponent:file]];
     89         }
     90         
     91         return storeArray;
     92     }
     93     else
     94     {
     95         return nil;
     96     }
     97 }
     98 
     99 + (void)enumeratorFolder:(NSString *)folderPath each:(void (^)(NSString *path))each
    100 {
    101     if ([self isDirectory:folderPath])
    102     {
    103         NSMutableArray *storeArray = [NSMutableArray array];
    104         
    105         NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:folderPath];
    106         NSFileManager *localFileManager = [[NSFileManager alloc] init];
    107         NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir];
    108         
    109         NSString *file;
    110         while ((file = [dirEnum nextObject]))
    111         {
    112             [storeArray addObject:[folderPath stringByAppendingPathComponent:file]];
    113         }
    114         
    115         [storeArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    116             each(obj);
    117         }];
    118     }
    119 }
    120 
    121 + (NSDictionary *)fileInfo:(NSString *)filePath
    122 {
    123     return [[NSFileManager defaultManager] attributesOfItemAtPath:[self path:filePath]
    124                                                             error:nil];
    125 }
    126 
    127 + (int)fileSize:(NSString *)filePath
    128 {
    129     return [[[[NSFileManager defaultManager] attributesOfItemAtPath:[self path:filePath]
    130                                                               error:nil] 
    131              objectForKey:@"NSFileSize"] intValue];
    132 }
    133 
    134 + (BOOL)writePlist:(id)plist to:(NSString *)filePath
    135 {
    136     if ([plist isKindOfClass:[NSDictionary class]])
    137     {
    138         NSDictionary *point = plist;
    139         
    140         return [point writeToFile:[self path:filePath]
    141                        atomically:YES];
    142     }
    143     else if ([plist isKindOfClass:[NSArray class]])
    144     {
    145         NSArray *point = plist;
    146         
    147         return [point writeToFile:[self path:filePath]
    148                        atomically:YES];
    149     }
    150     else
    151     {
    152         return NO;
    153     }
    154 }
    155 
    156 + (NSMutableDictionary *)dictionaryFrom:(NSString *)filePath
    157 {
    158     NSMutableDictionary *dictionary = 
    159         [[NSMutableDictionary alloc] initWithContentsOfFile:[self path:filePath]];
    160     
    161     return dictionary;
    162 }
    163 
    164 + (NSMutableArray *)arrayFrom:(NSString *)filePath
    165 {
    166     NSMutableArray *array = 
    167         [[NSMutableArray alloc] initWithContentsOfFile:[self path:filePath]];
    168     
    169     return array;
    170 }
    171 
    172 + (void)path:(NSString *)filePath dictionary:(void (^)(NSMutableDictionary *dictionary))dictionary
    173 {
    174     NSMutableDictionary *sourceDictionary = 
    175         [[NSMutableDictionary alloc] initWithContentsOfFile:[self path:filePath]];
    176     
    177     dictionary(sourceDictionary);
    178     
    179     [sourceDictionary writeToFile:[self path:filePath]
    180                        atomically:YES];
    181 }
    182 
    183 + (void)path:(NSString *)filePath array:(void (^)(NSMutableArray *array))array
    184 {
    185     NSMutableArray *sourceArray = 
    186     [[NSMutableArray alloc] initWithContentsOfFile:[self path:filePath]];
    187     
    188     array(sourceArray);
    189     
    190     [sourceArray writeToFile:[self path:filePath]
    191                   atomically:YES];
    192 }
    193 
    194 @end
  • 相关阅读:
    JVM学习02:GC垃圾回收和内存分配
    JVM学习01:内存结构
    webservice学习01:wsdl文档结构
    项目总结21:项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库)
    mysql学习3:mysql之my.cnf详解
    项目总结20:阿里云免费https证书申请
    5月9日——vue渲染过程中{{xxx}}显示
    5月8日——iOS中的3D Touch效果
    5月7日——采用第三方页面内容,但是顶部title使用自己的
    5月5日——更改手机状态栏的背景颜色
  • 原文地址:https://www.cnblogs.com/yuanyuandachao/p/3812142.html
Copyright © 2011-2022 走看看