• 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: 不会扫描隐藏文件
  • 相关阅读:
    mysql 常用sql操作总结
    c# 安装windows服务
    c# Ajax后台动态分页
    c# SQLHelper总汇
    C#调用Web Service时的身份验证
    c#定时调用作业
    【转】Powerdesigner逆向工程从sql server数据库生成pdm
    aspx页面@Page指令解析
    C# 简单日志文本输出
    【摘抄】C# DateTime.Now详解
  • 原文地址:https://www.cnblogs.com/lxgo/p/5280388.html
Copyright © 2020-2023  润新知