NSFileManager的基本使用 - OC

作者: 以太死多 | 来源:发表于2015-09-05 11:26 被阅读4830次
    • 什么是NSFileManager?
      NSFileManager是用来管理文件系统的
      它可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)

    • NSFileManager使用了单例模式singleton
      使用defaultManager方法可以获得那个单例对象
      [NSFileManager defaultManager]

        //NSFileManager 用于判断
        
        NSString *filePath = @"/Users/zhaoxiaohu/Desktop/arr.plist";
        
         NSString *filePath2 = @"/";
    
    1) 判断文件是否存在
        //创建文件管理对象
        //调用defaultManager 创建一个文件管理的单例对象
        //单例对象:在程序运行期间,只有一个对象存在
        NSFileManager *fm = [NSFileManager defaultManager];
        // YES 存在   NO 不存在
        BOOL isYES = [fm fileExistsAtPath:filePath];
        NSLog(@"-->%d",isYES);
    
    2) 判断是否是一个目录
        if(isYES){
            BOOL isDir;
        
            // 2) 判断是否是一个目录
            [fm fileExistsAtPath:filePath isDirectory:&isDir];
            
            if (isDir) {
                NSLog(@"这是一个目录");
            }else{
            
                NSLog(@"这不是一个目录");
            }
        
        }
    
    3) 判断文件是否可读
        isYES = [fm isReadableFileAtPath:filePath];
    
    4) 是否可写
        isYES = [fm isWritableFileAtPath:filePath2];
    
    5) 是否可删除
        isYES = [fm isDeletableFileAtPath:filePath2];
        
                 NSLog(@"-->%d",isYES);
    
    6)获取文件的信息(属性)
        //创建文件对象
        NSFileManager *fm = [NSFileManager defaultManager];
        NSString *filePath = @"/Users/zhaoxiaohu/Desktop/arr.plist";
        
        NSString *dirPath = @"/Users/zhaoxiaohu/Desktop/a";
       
        //1)如何获取文件的信息(属性)
        NSDictionary *dict = [fm attributesOfItemAtPath:filePath error:nil];
        NSLog(@"%@",dict);
        NSLog(@"%@,%@",[dict objectForKey:@"NSFileOwnerAccountName"],dict[@"NSFileOwnerAccountName"]);
    
    7)获取指定目录下文件及子目录
        //使用递归的方式 获取当前目录及子目录下的所有的文件及文件夹
        NSArray *subPaths = [fm subpathsAtPath:dirPath];
        
        //(推荐使用)subpathsOfDirectoryAtPath 不是使用递归的方式获取的
        subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil];
        NSLog(@"subPaths = %@",subPaths);
    
    8)获取指定目录下的文件及目录信息(不在获取后代路径)
        subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil];
        NSLog(@"subPaths = %@",subPaths);
    
    9)创建目录
       //创建文件管理对象
        NSFileManager *fm = [NSFileManager defaultManager];
        
        //如何创建目录 (路径  :/Users/zhaoxiaohu/Desktop/aaa)
        NSString *createDirPath = @"/Users/zhaoxiaohu/Desktop/aaa/ccc/bbb/love.txt";
        fm createDirectoryAtPath:@"路径" withIntermediateDirectories:YES/NO 创建路径的时候,YES自动创建路径中缺少的目录,NO的不会创建缺少的目录 attributes:属性的字典 error:错误对象
        
               BOOL isYES = [fm createDirectoryAtPath:createDirPath withIntermediateDirectories:YES attributes:nil error:nil];
       
        if (isYES) {
            NSLog(@"成功");
       }
    
    10)创建文件
        //如何创建文件
        NSString *str = @"每当我错过一个女孩,我就向山上放一块砖,于是就有了长城";
        //writeToFile
        //fm createFileAtPath:@"路径" contents: NSData类型的数据 attributes:文件的属性的字典
        //创建NSData?   是一个处理二进制数据的类
        //NSString -----> NSData  (把NSString转化成NSData)
        
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        BOOL isYes;
        // createFileAtPath 创建文件
        isYes = [fm createFileAtPath:createDirPath contents:data attributes:nil];
        NSLog(@"isYes = %d",isYes);
    
    11)copy文件
        //如何copy文件
        NSString *targetPath = @"/Users/zhaoxiaohu/Desktop/aaa/ccc/love.txt";
        [fm copyItemAtPath:createDirPath toPath:targetPath error:nil];
        
         NSString *targetPath = @"/Users/zhaoxiaohu/Desktop/aaa/love.txt";
    
    12)移动文件
        //如何移动文件
        [fm moveItemAtPath:createDirPath toPath:targetPath error:nil];
    
    13)删除文件
        //如何删除文件
        [fm removeItemAtPath:targetPath error:nil];

    相关文章

      网友评论

        本文标题:NSFileManager的基本使用 - OC

        本文链接:https://www.haomeiwen.com/subject/vialcttx.html