iOS文件(沙盒目錄,文件創建、移動、復制等)


目錄獲取

獲取沙盒的主目錄路徑:

  1.  
    + (NSString *)homeDir {
  2.  
    return NSHomeDirectory();
  3.  
    }
  4.  
    復制代碼

獲取沙盒中Documents的目錄路徑:

  1.  
    + (NSString *)documentsDir {
  2.  
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  3.  
    }
  4.  
    復制代碼

獲取沙盒中Library的目錄路徑:

  1.  
    + (NSString *)libraryDir {
  2.  
    return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  3.  
    }
  4.  
    復制代碼

獲取沙盒中Libarary/Preferences的目錄路徑:

  1.  
    + (NSString *)preferencesDir {
  2.  
    NSString *libraryDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  3.  
    return [libraryDir stringByAppendingPathComponent:@"Preferences"];
  4.  
    }
  5.  
    復制代碼

獲取沙盒中Library/Caches的目錄路徑:

  1.  
    + (NSString *)cachesDir {
  2.  
    return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
  3.  
    }
  4.  
    復制代碼

獲取沙盒中tmp的目錄路徑:

  1.  
    + (NSString *)tmpDir {
  2.  
    return NSTemporaryDirectory();
  3.  
    }
  4.  
    復制代碼

2、創建文件(夾)

創建文件夾:

  1.  
    + (BOOL)createDirectoryAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    NSFileManager *manager = [NSFileManager defaultManager];
  3.  
    /* createDirectoryAtPath:withIntermediateDirectories:attributes:error:
  4.  
    * 參數1:創建的文件夾的路徑
  5.  
    * 參數2:是否創建媒介的布爾值,一般為YES
  6.  
    * 參數3: 屬性,沒有就置為nil
  7.  
    * 參數4: 錯誤信息
  8.  
    */
  9.  
    BOOL isSuccess = [manager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:error];
  10.  
    return isSuccess;
  11.  
    }
  12.  
    復制代碼

創建文件:

  1.  
    /*創建文件
  2.  
    *參數1:文件創建的路徑
  3.  
    *參數2:寫入文件的內容
  4.  
    *參數3:假如已經存在此文件是否覆蓋
  5.  
    *參數4:錯誤信息
  6.  
    */
  7.  
    + (BOOL)createFileAtPath:(NSString *)path overwrite:(BOOL)overwrite error:(NSError *__autoreleasing *)error {
  8.  
    // 如果文件夾路徑不存在,那么先創建文件夾
  9.  
    NSString *directoryPath = [self directoryAtPath:path];
  10.  
    if (![self isExistsAtPath:directoryPath]) {
  11.  
    // 創建文件夾
  12.  
    if (![self createDirectoryAtPath:directoryPath error:error]) {
  13.  
    return NO;
  14.  
    }
  15.  
    }
  16.  
    // 如果文件存在,並不想覆蓋,那么直接返回YES。
  17.  
    if (!overwrite) {
  18.  
    if ([self isExistsAtPath:path]) {
  19.  
    return YES;
  20.  
    }
  21.  
    }
  22.  
    /*創建文件
  23.  
    *參數1:創建文件的路徑
  24.  
    *參數2:創建文件的內容(NSData類型)
  25.  
    *參數3:文件相關屬性
  26.  
    */
  27.  
    BOOL isSuccess = [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];
  28.  
     
  29.  
    return isSuccess;
  30.  
    }
  31.  
    復制代碼

獲取文件創建的時間或者修改的時間:

  1.  
    //獲取文件創建的時間
  2.  
    + (NSDate *)creationDateOfItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  3.  
    return (NSDate *)[self attributeOfItemAtPath:path forKey:NSFileCreationDate error:error];
  4.  
    }
  5.  
     
  6.  
    //獲取文件修改的時間
  7.  
    + (NSDate *)modificationDateOfItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  8.  
    return (NSDate *)[self attributeOfItemAtPath:path forKey:NSFileModificationDate error:error];
  9.  
    }
  10.  
     
  11.  
    復制代碼

3、寫入文件內容

按照文件路徑向文件寫入內容,內容可為數組、字典、NSData等等:

  1.  
    #pragma mark 寫入文件內容
  2.  
    /*參數1:文件路徑
  3.  
    *參數2:文件內容
  4.  
    *參數3:錯誤信息
  5.  
    */
  6.  
    + (BOOL)writeFileAtPath:(NSString *)path content:(NSObject *)content error:(NSError *__autoreleasing *)error {
  7.  
    //判斷文件內容是否為空
  8.  
    if (!content) {
  9.  
    [NSException raise:@ "非法的文件內容" format:@"文件內容不能為nil"];
  10.  
    return NO;
  11.  
    }
  12.  
    //判斷文件(夾)是否存在
  13.  
    if ([self isExistsAtPath:path]) {
  14.  
    if ([content isKindOfClass:[NSMutableArray class]]) {//文件內容為可變數組
  15.  
    [(NSMutableArray *)content writeToFile:path atomically:YES];
  16.  
    } else if ([content isKindOfClass:[NSArray class]]) {//文件內容為不可變數組
  17.  
    [(NSArray *)content writeToFile:path atomically:YES];
  18.  
    } else if ([content isKindOfClass:[NSMutableData class]]) {//文件內容為可變NSMutableData
  19.  
    [(NSMutableData *)content writeToFile:path atomically:YES];
  20.  
    } else if ([content isKindOfClass:[NSData class]]) {//文件內容為NSData
  21.  
    [(NSData *)content writeToFile:path atomically:YES];
  22.  
    } else if ([content isKindOfClass:[NSMutableDictionary class]]) {//文件內容為可變字典
  23.  
    [(NSMutableDictionary *)content writeToFile:path atomically:YES];
  24.  
    } else if ([content isKindOfClass:[NSDictionary class]]) {//文件內容為不可變字典
  25.  
    [(NSDictionary *)content writeToFile:path atomically:YES];
  26.  
    } else if ([content isKindOfClass:[NSJSONSerialization class]]) {//文件內容為JSON類型
  27.  
    [(NSDictionary *)content writeToFile:path atomically:YES];
  28.  
    } else if ([content isKindOfClass:[NSMutableString class]]) {//文件內容為可變字符串
  29.  
    [[((NSString *)content) dataUsingEncoding:NSUTF8StringEncoding] writeToFile:path atomically:YES];
  30.  
    } else if ([content isKindOfClass:[NSString class]]) {//文件內容為不可變字符串
  31.  
    [[((NSString *)content) dataUsingEncoding:NSUTF8StringEncoding] writeToFile:path atomically:YES];
  32.  
    } else if ([content isKindOfClass:[UIImage class]]) {//文件內容為圖片
  33.  
    [UIImagePNGRepresentation((UIImage *)content) writeToFile:path atomically:YES];
  34.  
    } else if ([content conformsToProtocol:@protocol(NSCoding)]) {//文件歸檔
  35.  
    [NSKeyedArchiver archiveRootObject:content toFile:path];
  36.  
    } else {
  37.  
    [NSException raise:@ "非法的文件內容" format:@"文件類型%@異常,無法被處理。", NSStringFromClass([content class])];
  38.  
     
  39.  
    return NO;
  40.  
    }
  41.  
    } else {
  42.  
    return NO;
  43.  
    }
  44.  
    return YES;
  45.  
    }
  46.  
    #pragma mark - 判斷文件(夾)是否存在
  47.  
    + (BOOL)isExistsAtPath:(NSString *)path {
  48.  
    return [[NSFileManager defaultManager] fileExistsAtPath:path];
  49.  
    }
  50.  
    復制代碼

4、刪除文件(夾)

刪除文件(夾)

  1.  
    + (BOOL)removeItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return [[NSFileManager defaultManager] removeItemAtPath:path error:error];
  3.  
    }
  4.  
    復制代碼

清空Caches或者temp文件夾:

  1.  
    #pragma mark 清空Cashes文件夾
  2.  
    + (BOOL)clearCachesDirectory {
  3.  
    NSArray *subFiles = [self listFilesInCachesDirectoryByDeep:NO];
  4.  
    BOOL isSuccess = YES;
  5.  
     
  6.  
    for (NSString *file in subFiles) {
  7.  
    NSString *absolutePath = [[self cachesDir] stringByAppendingPathComponent:file];
  8.  
    isSuccess &= [self removeItemAtPath:absolutePath];
  9.  
    }
  10.  
    return isSuccess;
  11.  
    }
  12.  
    #pragma mark 清空temp文件夾
  13.  
    + (BOOL)clearTmpDirectory {
  14.  
    NSArray *subFiles = [self listFilesInTmpDirectoryByDeep:NO];
  15.  
    BOOL isSuccess = YES;
  16.  
     
  17.  
    for (NSString *file in subFiles) {
  18.  
    NSString *absolutePath = [[self tmpDir] stringByAppendingPathComponent:file];
  19.  
    isSuccess &= [self removeItemAtPath:absolutePath];
  20.  
    }
  21.  
    return isSuccess;
  22.  
    }
  23.  
    復制代碼

5、復制文件(夾)

依據源文件的路徑復制一份到目標路徑:

  1.  
    #pragma mark - 復制文件
  2.  
    /*參數1、被復制文件路徑
  3.  
    *參數2、要復制到的目標文件路徑
  4.  
    *參數3、當要復制到的文件路徑文件存在,會復制失敗,這里傳入是否覆蓋
  5.  
    *參數4、錯誤信息
  6.  
    */
  7.  
    + (BOOL)copyItemAtPath:(NSString *)path toPath:(NSString *)toPath overwrite:(BOOL)overwrite error:(NSError *__autoreleasing *)error {
  8.  
    // 先要保證源文件路徑存在,不然拋出異常
  9.  
    if (![self isExistsAtPath:path]) {
  10.  
    [NSException raise:@ "非法的源文件路徑" format:@"源文件路徑%@不存在,請檢查源文件路徑", path];
  11.  
    return NO;
  12.  
    }
  13.  
    //獲得目標文件的上級目錄
  14.  
    NSString *toDirPath = [self directoryAtPath:toPath];
  15.  
    if (![self isExistsAtPath:toDirPath]) {
  16.  
    // 創建復制路徑
  17.  
    if (![self createDirectoryAtPath:toDirPath error:error]) {
  18.  
    return NO;
  19.  
    }
  20.  
    }
  21.  
    // 如果覆蓋,那么先刪掉原文件
  22.  
    if (overwrite) {
  23.  
    if ([self isExistsAtPath:toPath]) {
  24.  
    [self removeItemAtPath:toPath error:error];
  25.  
    }
  26.  
    }
  27.  
    // 復制文件,如果不覆蓋且文件已存在則會復制失敗
  28.  
    BOOL isSuccess = [[NSFileManager defaultManager] copyItemAtPath:path toPath:toPath error:error];
  29.  
     
  30.  
    return isSuccess;
  31.  
    }
  32.  
     
  33.  
    #pragma mark - 判斷文件(夾)是否存在
  34.  
    + (BOOL)isExistsAtPath:(NSString *)path {
  35.  
    return [[NSFileManager defaultManager] fileExistsAtPath:path];
  36.  
    }
  37.  
    復制代碼

6、 移動文件(夾)

依據源文件的路徑移動到目標路徑:

  1.  
    #pragma mark - 移動文件(夾)
  2.  
    /*參數1、被移動文件路徑
  3.  
    *參數2、要移動到的目標文件路徑
  4.  
    *參數3、當要移動到的文件路徑文件存在,會移動失敗,這里傳入是否覆蓋
  5.  
    *參數4、錯誤信息
  6.  
    */
  7.  
    + (BOOL)moveItemAtPath:(NSString *)path toPath:(NSString *)toPath overwrite:(BOOL)overwrite error:(NSError *__autoreleasing *)error {
  8.  
    // 先要保證源文件路徑存在,不然拋出異常
  9.  
    if (![self isExistsAtPath:path]) {
  10.  
    [NSException raise:@ "非法的源文件路徑" format:@"源文件路徑%@不存在,請檢查源文件路徑", path];
  11.  
    return NO;
  12.  
    }
  13.  
    //獲得目標文件的上級目錄
  14.  
    NSString *toDirPath = [self directoryAtPath:toPath];
  15.  
    if (![self isExistsAtPath:toDirPath]) {
  16.  
    // 創建移動路徑
  17.  
    if (![self createDirectoryAtPath:toDirPath error:error]) {
  18.  
    return NO;
  19.  
    }
  20.  
    }
  21.  
    // 判斷目標路徑文件是否存在
  22.  
    if ([self isExistsAtPath:toPath]) {
  23.  
    //如果覆蓋,刪除目標路徑文件
  24.  
    if (overwrite) {
  25.  
    //刪掉目標路徑文件
  26.  
    [self removeItemAtPath:toPath error:error];
  27.  
    } else {
  28.  
    //刪掉被移動文件
  29.  
    [self removeItemAtPath:path error:error];
  30.  
    return YES;
  31.  
    }
  32.  
    }
  33.  
     
  34.  
    // 移動文件,當要移動到的文件路徑文件存在,會移動失敗
  35.  
    BOOL isSuccess = [[NSFileManager defaultManager] moveItemAtPath:path toPath:toPath error:error];
  36.  
     
  37.  
    return isSuccess;
  38.  
    }
  39.  
    復制代碼

7、根據URL獲取文件名

根據文件路徑獲取文件名稱,是否需要后綴:

  1.  
    #pragma mark - 根據URL獲取文件名
  2.  
    /*參數1:文件路徑
  3.  
    *參數2、是否需要后綴
  4.  
    */
  5.  
    + (NSString *)fileNameAtPath:(NSString *)path suffix:(BOOL)suffix {
  6.  
    NSString *fileName = [path lastPathComponent];
  7.  
    if (!suffix) {
  8.  
    fileName = [fileName stringByDeletingPathExtension];
  9.  
    }
  10.  
    return fileName;
  11.  
    }
  12.  
     
  13.  
    復制代碼

獲取文件所在的文件夾路徑:

  1.  
    + (NSString *)directoryAtPath:(NSString *)path {
  2.  
    return [path stringByDeletingLastPathComponent];
  3.  
    }
  4.  
    復制代碼

根據文件路徑獲取文件擴展類型:

  1.  
    + (NSString *)suffixAtPath:(NSString *)path {
  2.  
    return [path pathExtension];
  3.  
    }
  4.  
    復制代碼

8、判斷文件(夾)是否存在

判斷文件路徑是否存在:

  1.  
    + (BOOL)isExistsAtPath:(NSString *)path {
  2.  
    return [[NSFileManager defaultManager] fileExistsAtPath:path];
  3.  
    }
  4.  
    復制代碼

判斷路徑是否為空(判空條件是文件大小為0,或者是文件夾下沒有子文件):

  1.  
    + (BOOL)isEmptyItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return ([self isFileAtPath:path error:error] &&
  3.  
    [[self sizeOfItemAtPath:path error:error] intValue] == 0) ||
  4.  
    ([self isDirectoryAtPath:path error:error] &&
  5.  
    [[self listFilesInDirectoryAtPath:path deep:NO] count] == 0);
  6.  
    }
  7.  
     
  8.  
    復制代碼

判斷目錄是否是文件夾:

  1.  
    + (BOOL)isDirectoryAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return ([self attributeOfItemAtPath:path forKey:NSFileType error:error] == NSFileTypeDirectory);
  3.  
    }
  4.  
    復制代碼

判斷目錄是否是文件:

  1.  
    + (BOOL)isFileAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return ([self attributeOfItemAtPath:path forKey:NSFileType error:error] == NSFileTypeRegular);
  3.  
    }
  4.  
    復制代碼

判斷目錄是否可以執行:

  1.  
    + (BOOL)isExecutableItemAtPath:(NSString *)path {
  2.  
    return [[NSFileManager defaultManager] isExecutableFileAtPath:path];
  3.  
    }
  4.  
    復制代碼

判斷目錄是否可讀:

  1.  
    + (BOOL)isReadableItemAtPath:(NSString *)path {
  2.  
    return [[NSFileManager defaultManager] isReadableFileAtPath:path];
  3.  
    }
  4.  
    復制代碼

判斷目錄是否可寫:

  1.  
    + (BOOL)isWritableItemAtPath:(NSString *)path {
  2.  
    return [[NSFileManager defaultManager] isWritableFileAtPath:path];
  3.  
    }
  4.  
    復制代碼

9、獲取文件(夾)大小

獲取文件大小(NSNumber):

  1.  
    + (NSNumber *)sizeOfItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return (NSNumber *)[self attributeOfItemAtPath:path forKey:NSFileSize error:error];
  3.  
    }
  4.  
    復制代碼

獲取文件夾大小(NSNumber):

  1.  
    #pragma mark 獲取文件夾的大小
  2.  
    + (NSNumber *)sizeOfDirectoryAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  3.  
    if ([self isDirectoryAtPath:path error:error]) {
  4.  
    //深遍歷文件夾
  5.  
    NSArray *subPaths = [self listFilesInDirectoryAtPath:path deep:YES];
  6.  
    NSEnumerator *contentsEnumurator = [subPaths objectEnumerator];
  7.  
     
  8.  
    NSString *file;
  9.  
    unsigned long long int folderSize = 0;
  10.  
     
  11.  
    while (file = [contentsEnumurator nextObject]) {
  12.  
    NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[path stringByAppendingPathComponent:file] error:nil];
  13.  
    folderSize += [[fileAttributes objectForKey:NSFileSize] intValue];
  14.  
    }
  15.  
    return [NSNumber numberWithUnsignedLongLong:folderSize];
  16.  
    }
  17.  
    return nil;
  18.  
    }
  19.  
    復制代碼

獲取文件大小(單位為字節):

  1.  
    + (NSString *)sizeFormattedOfItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    //先獲取NSNumber類型的大小
  3.  
    NSNumber *size = [self sizeOfItemAtPath:path error:error];
  4.  
    if (size) {
  5.  
    //將文件大小格式化為字節
  6.  
    return [self sizeFormatted:size];
  7.  
    }
  8.  
    return nil;
  9.  
    }
  10.  
     
  11.  
    #pragma mark 將文件大小格式化為字節
  12.  
    +(NSString *)sizeFormatted:(NSNumber *)size {
  13.  
    /*NSByteCountFormatterCountStyle枚舉
  14.  
    *NSByteCountFormatterCountStyleFile 字節為單位,采用十進制的1000bytes = 1KB
  15.  
    *NSByteCountFormatterCountStyleMemory 字節為單位,采用二進制的1024bytes = 1KB
  16.  
    *NSByteCountFormatterCountStyleDecimal KB為單位,采用十進制的1000bytes = 1KB
  17.  
    *NSByteCountFormatterCountStyleBinary KB為單位,采用二進制的1024bytes = 1KB
  18.  
    */
  19.  
    return [NSByteCountFormatter stringFromByteCount:[size unsignedLongLongValue] countStyle:NSByteCountFormatterCountStyleFile];
  20.  
    }
  21.  
    復制代碼

獲取文件夾大小(單位為字節):

  1.  
    + (NSString *)sizeFormattedOfDirectoryAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    //先獲取NSNumber類型的大小
  3.  
    NSNumber *size = [self sizeOfDirectoryAtPath:path error:error];
  4.  
    if (size) {
  5.  
    return [self sizeFormatted:size];
  6.  
    }
  7.  
    return nil;
  8.  
    }
  9.  
    #pragma mark 將文件大小格式化為字節
  10.  
    +(NSString *)sizeFormatted:(NSNumber *)size {
  11.  
    /*NSByteCountFormatterCountStyle枚舉
  12.  
    *NSByteCountFormatterCountStyleFile 字節為單位,采用十進制的1000bytes = 1KB
  13.  
    *NSByteCountFormatterCountStyleMemory 字節為單位,采用二進制的1024bytes = 1KB
  14.  
    *NSByteCountFormatterCountStyleDecimal KB為單位,采用十進制的1000bytes = 1KB
  15.  
    *NSByteCountFormatterCountStyleBinary KB為單位,采用二進制的1024bytes = 1KB
  16.  
    */
  17.  
    return [NSByteCountFormatter stringFromByteCount:[size unsignedLongLongValue] countStyle:NSByteCountFormatterCountStyleFile];
  18.  
    }
  19.  
    復制代碼

10、遍歷文件夾

遍歷文件夾,分為深遍歷和淺遍歷:

  1.  
    #pragma mark - 遍歷文件夾
  2.  
    /**
  3.  
    文件遍歷
  4.  
    參數1:目錄的絕對路徑
  5.  
    參數2:是否深遍歷 (1. 淺遍歷:返回當前目錄下的所有文件和文件夾;
  6.  
    2. 深遍歷:返回當前目錄下及子目錄下的所有文件和文件夾)
  7.  
    */
  8.  
    + (NSArray *)listFilesInDirectoryAtPath:(NSString *)path deep:(BOOL)deep {
  9.  
    NSArray *listArr;
  10.  
    NSError *error;
  11.  
    NSFileManager *manager = [NSFileManager defaultManager];
  12.  
    if (deep) {
  13.  
    // 深遍歷
  14.  
    NSArray *deepArr = [manager subpathsOfDirectoryAtPath:path error:&error];
  15.  
    if (!error) {
  16.  
    listArr = deepArr;
  17.  
    } else {
  18.  
    listArr = nil;
  19.  
    }
  20.  
    } else {
  21.  
    // 淺遍歷
  22.  
    NSArray *shallowArr = [manager contentsOfDirectoryAtPath:path error:&error];
  23.  
    if (!error) {
  24.  
    listArr = shallowArr;
  25.  
    } else {
  26.  
    listArr = nil;
  27.  
    }
  28.  
    }
  29.  
    return listArr;
  30.  
    }
  31.  
    復制代碼

11、獲取文件屬性

根據key獲取文件某個屬性:

  1.  
    //key的列表如:
  2.  
    FOUNDATION_EXPORT NSString * const NSFileType;
  3.  
    FOUNDATION_EXPORT NSString * const NSFileTypeDirectory;
  4.  
    FOUNDATION_EXPORT NSString * const NSFileTypeRegular;
  5.  
    FOUNDATION_EXPORT NSString * const NSFileTypeSymbolicLink;
  6.  
    FOUNDATION_EXPORT NSString * const NSFileTypeSocket;
  7.  
    FOUNDATION_EXPORT NSString * const NSFileTypeCharacterSpecial;
  8.  
    FOUNDATION_EXPORT NSString * const NSFileTypeBlockSpecial;
  9.  
    FOUNDATION_EXPORT NSString * const NSFileTypeUnknown;
  10.  
    FOUNDATION_EXPORT NSString * const NSFileSize;
  11.  
    FOUNDATION_EXPORT NSString * const NSFileModificationDate;
  12.  
    FOUNDATION_EXPORT NSString * const NSFileReferenceCount;
  13.  
    FOUNDATION_EXPORT NSString * const NSFileDeviceIdentifier;
  14.  
    FOUNDATION_EXPORT NSString * const NSFileOwnerAccountName;
  15.  
    FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountName;
  16.  
    FOUNDATION_EXPORT NSString * const NSFilePosixPermissions;
  17.  
    FOUNDATION_EXPORT NSString * const NSFileSystemNumber;
  18.  
    FOUNDATION_EXPORT NSString * const NSFileSystemFileNumber;
  19.  
    FOUNDATION_EXPORT NSString * const NSFileExtensionHidden;
  20.  
    FOUNDATION_EXPORT NSString * const NSFileHFSCreatorCode;
  21.  
    FOUNDATION_EXPORT NSString * const NSFileHFSTypeCode;
  22.  
    FOUNDATION_EXPORT NSString * const NSFileImmutable;
  23.  
    FOUNDATION_EXPORT NSString * const NSFileAppendOnly;
  24.  
    FOUNDATION_EXPORT NSString * const NSFileCreationDate;
  25.  
    FOUNDATION_EXPORT NSString * const NSFileOwnerAccountID;
  26.  
    FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountID;
  27.  
    FOUNDATION_EXPORT NSString * const NSFileBusy;
  28.  
    FOUNDATION_EXPORT NSString * const NSFileProtectionKey NS_AVAILABLE_IOS(4_0);
  29.  
    FOUNDATION_EXPORT NSString * const NSFileProtectionNone NS_AVAILABLE_IOS(4_0);
  30.  
    FOUNDATION_EXPORT NSString * const NSFileProtectionComplete NS_AVAILABLE_IOS(4_0);
  31.  
    FOUNDATION_EXPORT NSString * const NSFileProtectionCompleteUnlessOpen NS_AVAILABLE_IOS(5_0);
  32.  
    FOUNDATION_EXPORT NSString * const NSFileProtectionCompleteUntilFirstUserAuthentication NS_AVAILABLE_IOS(5_0);
  33.  
    復制代碼
  1.  
    + (id)attributeOfItemAtPath:(NSString *)path forKey:(NSString *)key error:(NSError *__autoreleasing *)error {
  2.  
    return [[self attributesOfItemAtPath:path error:error] objectForKey:key];
  3.  
    }
  4.  
    復制代碼

獲取文件屬性集合:

  1.  
    + (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError *__autoreleasing *)error {
  2.  
    return [[NSFileManager defaultManager] attributesOfItemAtPath:path error:error];
  3.  
    }
  4.  
    復制代碼
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM