zoukankan      html  css  js  c++  java
  • iOS开发知识体系——File Manager

    一、获取文件属性的方法:
        1> NSDictionary *folderAttr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
        获取文件夹大小:[folderAttr objectForKey:NSFileSystemSize];
        剩余空间:[folderAttr objectForKey:NSFileSystemFreeSize];
        代替方法:fileSystemAttributesAtPath
        2> NSDictionary * fileAttributes = [FileDefaultManager attributesOfItemAtPath:filePath error:&error];
        获取文件大小:unsigned long long length = [fileAttributes fileSize];
        代替方法:fileAttributesAtPath:traverseLink

    二、常用方法整理

    //返回文件大小(字节byte)
    + (unsigned long long)getFileSize:(NSString *)filePath{
        if (![FileDefaultManager fileExistsAtPath:filePath]) {MyNSLog(@"要计算大小的文件不存在!!!filePath=%@", filePath);return 0;}
        NSError *error=nil;//局部变量必须赋值,并不是默认的nil
        NSDictionary * fileAttributes = [FileDefaultManager attributesOfItemAtPath:filePath error:&error];
        if (fileAttributes == nil || error!=nil) {MyNSLog(@"文件大小计算出错!err=%@",error.localizedDescription);return 0;}    
        return [fileAttributes fileSize];
    }
    //拷贝文件
    + (BOOL)fileCopy:(NSString *)sName TargetName:(NSString *)tName{
        NSError *error=nil;
        BOOL isSucces=NO;
        if (![FileDefaultManager fileExistsAtPath:sName]) {
            MyNSLog(@"要拷贝的源文件不存在!!!sName=%@", sName);
            return NO;
        }
        if ([FileDefaultManager fileExistsAtPath:tName]) {
            MyNSLog(@"要拷贝的目标文件已经存在!!!马上删除之...%@", tName);
            isSucces=[self fileDelete:tName];//如果不删除,后面的拷贝要失败
        }
        
        isSucces=[FileDefaultManager copyItemAtPath:sName toPath:tName error:&error];//调用拷贝方法
        if (error != nil) {
            MyNSLog(@"拷贝文件出错:%@", [error localizedDescription]);
        }else{
            MyNSLog(@"拷贝文件成功!");
        }
        return isSucces; 
    }
    //删除文件和文件夹
    + (BOOL)fileDelete:(NSString *)filePath{
        NSError *error=nil;
        BOOL isSucces=NO;
        if (![FileDefaultManager fileExistsAtPath:filePath]) {
            MyNSLog(@"要删除的地址不存在!!!filePath=%@", filePath);
            return NO;
        }
        
        isSucces=[FileDefaultManager removeItemAtPath:filePath error:&error];//调用删除方法
        if (error != nil) {
            MyNSLog(@"删除出错:%@", [error localizedDescription]);
        }else{
            MyNSLog(@"删除成功!");
        }
        return isSucces; 
    }
    
    //返回目录下所有的文件名(不包括路径)数组
    + (NSArray *)allFilesInFolderPath:(NSString *)folderPath{
        return [FileDefaultManager contentsOfDirectoryAtPath:folderPath error:nil];
    }
    //返回目录下所有文件的名称(不包括路径)和大小
    + (NSMutableArray *)allFilesAttributeInFolderPath:(NSString *)folderPath{
        NSArray *filesName = [FileDefaultManager contentsOfDirectoryAtPath:folderPath error:nil];
        NSMutableArray *fileAttributes = [NSMutableArray new];
        for (NSString *fileName in filesName) {
            NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];//完整路径
            BOOL isDir;//判断该路径是不是文件夹
            BOOL isExists = [FileDefaultManager fileExistsAtPath:filePath isDirectory:&isDir];
            if (![fileName.lowercaseString hasSuffix:@"ds_store"] && isExists && !isDir) {//过滤文件夹和索引文件.DS_Store
                NSError *error = nil;
                NSDictionary *attributes = [FileDefaultManager attributesOfItemAtPath:filePath error:&error];
                NSDictionary *dicTemp = [[NSDictionary alloc] initWithObjectsAndKeys:
                                         fileName,@"filename",
                                         [NSString stringWithFormat:@"%llu",[attributes fileSize]],@"filesize",
                                         nil];
                [fileAttributes addObject:dicTemp];
                dicTemp = nil;
            }
        }
        return fileAttributes;
    }
    //删除目录下所有文件和文件夹
    + (void)filesDelete:(NSString *)folderPath{
        NSArray *files = [self allFilesInFolderPath:folderPath];
        MyNSLog(@"files count=%d", [files count]);
        for (NSString *file in files) {
            NSString *filePath = [folderPath stringByAppendingPathComponent:file];//转换成url
            BOOL isDir;//判断该路径是不是文件夹
            BOOL isExists = [FileDefaultManager fileExistsAtPath:filePath isDirectory:&isDir];//返回文件或文件夹是否存在
            if (isExists) {
                [self fileDelete:filePath];
            }
        }
    }
    //创建文件夹
    + (BOOL)folderCreate:(NSString *)folderPath{
        NSError *error = nil;
        BOOL isSucces=NO;
        BOOL isDir;//判断该路径是不是文件夹
        BOOL isExists = [FileDefaultManager fileExistsAtPath:folderPath isDirectory:&isDir];//返回文件或文件夹是否存在
        if (isExists && isDir) {
            MyNSLog(@"%@文件夹已经存在!不需要创建!",folderPath);
            return YES;
        }
        
        MyNSLog(@"开始创建文件夹%@",folderPath);
        isSucces=[FileDefaultManager createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:&error];
        if (error != nil) {
            MyNSLog(@"创建出错:%@", [error localizedDescription]);
        }else{
            MyNSLog(@"创建成功!");
        }
        return isSucces;
    }
  • 相关阅读:
    Go反射
    Go_CSP并发模型
    Go_select
    Go计时器
    day9:vcp考试
    day8:vcp考试
    day7:vcp考试
    day6:vcp考试
    day5:vcp考试
    day4:vcp考试
  • 原文地址:https://www.cnblogs.com/yshch/p/3107189.html
Copyright © 2011-2022 走看看