zoukankan      html  css  js  c++  java
  • NSFileManager

    我们来解决一下几个问题:

    1、确定文件是否存在

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"file.txt"];
    BOOL fileExists = [fileManager fileExistsAtPath:filePath];

    2.列出文件里的所有目录

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
    NSArray *contents = [fileManager contentsOfDirectoryAtURL:bundleURL
                                   includingPropertiesForKeys:@[]
                                                      options:NSDirectoryEnumerationSkipsHiddenFiles
                                                        error:nil];
    
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pathExtension == 'png'"];
    for (NSURL *fileURL in [contents filteredArrayUsingPredicate:predicate]) {
        // 在目录中枚举 .png 文件
    }

    3.在目录中递归遍历文件

    NSFileManager *fileManager = [NSFileManager defaultManager];
        NSURL *url = [[NSBundle mainBundle] bundleURL];
        NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:url includingPropertiesForKeys:@[NSURLNameKey, NSURLIsDirectoryKey] options:NSDirectoryEnumerationSkipsHiddenFiles errorHandler:^BOOL(NSURL * _Nonnull url, NSError * _Nonnull error) {
            if (error) {
                NSLog(@"[Error]%@(%@)", error, url);
                return NO;
            }
            return YES;
        }];
        NSMutableArray *mutableFileURLs = [NSMutableArray array];
        for (NSURL *fileURL in enumerator) {
            //文件名
            NSString *fileName;
            [fileURL getResourceValue:&fileName forKey:NSURLNameKey error:nil];
            
            NSNumber *isDirectory;
            //是否是文件夹
            [fileURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];
            
            if ([fileName hasPrefix:@"_"] && [isDirectory boolValue]) {
                
                [enumerator skipDescendants];
                continue;
            }
            
            if (![isDirectory boolValue]) {
                
                [mutableFileURLs addObject:fileURL];
                
            }
            
        }
        NSLog(@"%@", mutableFileURLs);

    4.创建一个目录

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *imagesPath = [documentsPath stringByAppendingPathComponent:@"images"];
    if (![fileManager fileExistsAtPath:imagesPath]) {
        [fileManager createDirectoryAtPath:imagesPath withIntermediateDirectories:NO attributes:nil error:nil];
    }]

    5.删除一个目录

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *imagePath = [documentsPath stringByAppendingPathComponent:@"images"];
    [fileManager removeItemAtPath:imagePath error:nil];

    文件属性的建:

    • NSFileAppendOnly: 文件是否只读
    • NSFileBusy: 文件是否繁忙
    • NSFileCreationDate: 文件创建日期
    • NSFileOwnerAccountName: 文件所有者的名字
    • NSFileGroupOwnerAccountName: 文件所有组的名字
    • NSFileDeviceIdentifier: 文件所在驱动器的标示符
    • NSFileExtensionHidden: 文件后缀是否隐藏
    • NSFileGroupOwnerAccountID: 文件所有组的group ID
    • NSFileHFSCreatorCode: 文件的HFS创建者的代码
    • NSFileHFSTypeCode: 文件的HFS类型代码
    • NSFileImmutable: 文件是否可以改变
    • NSFileModificationDate: 文件修改日期
    • NSFileOwnerAccountID: 文件所有者的ID
    • NSFilePosixPermissions: 文件的Posix权限
    • NSFileReferenceCount: 文件的链接数量
    • NSFileSize: 文件的字节
    • NSFileSystemFileNumber: 文件在文件系统的文件数量
    • NSFileType: 文件类型
    • NSDirectoryEnumerationSkipsSubdirectoryDescendants: 浅层的枚举,不会枚举子目录
    • NSDirectoryEnumerationSkipsPackageDescendants: 不会扫描pakages的内容
    • NSDirectoryEnumerationSkipsHiddenFile: 不会扫描隐藏文件
  • 相关阅读:
    手动档和自动档
    关于目标:骑行里程破万的感想
    JavaScript基础学习-iterable
    第一个mybatisplus
    MAVEN安装配置
    List和ArrayList的区别
    mysql安装
    Nginx的命令
    Windows Server 2008/2012/2016允许多个用户同时远程桌面
    soapui模拟桩-4 将模拟桩打包成war包
  • 原文地址:https://www.cnblogs.com/lxgo/p/5280388.html
Copyright © 2011-2022 走看看