黑马程序员——Foundation框架——NSFileManager介绍及使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、NSFileManager介绍

NSFileManager是用来管理文件系统的 它可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)

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

二、NSFileManager基本使用方法

- (BOOL)fileExistsAtPath:(NSString *)path;

 path这个文件或文件夹(目录)是否存在

- (BOOL)fileExistsAtPath:(NSString *)pathisDirectory:(BOOL *)isDirectory;

path这个文件或文件夹是否存在, isDirectory代表是否为文件夹

- (BOOL)isReadableFileAtPath:(NSString *)path;

path这个文件或文件夹是否可读

 

- (BOOL)isWritableFileAtPath:(NSString *)path;

path这个文件或文件夹是否可写

- (BOOL)isDeletableFileAtPath:(NSString *)path;

 path这个文件或文件夹是否可删除

#import <Foundation/Foundation.h>
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
       
        //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);
       
       
        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);
    }
    return 0;
}
 

三、NSFileManager文件访问

- (NSDictionary *)attributesOfItemAtPath:(NSString*)path error:(NSError **)error;

获得path这个文件\文件夹的属性

- (NSArray *)subpathsAtPath:(NSString *)path;

查找给定路径下的所有子路径,返回一个数组, 深度查找,不限于当前层,也会查找package的内容。

- (NSArray *)subpathsOfDirectoryAtPath:(NSString*)path error:(NSError **)error;

获得path的所有子路径(后代路径),上面两个方法功能一样。

- (NSArray *)contentsOfDirectoryAtPath:(NSString*)path error:(NSError **)error;

获得path的当前子路径(path下的所有直接子内容,path必须是一个目录)

- (NSData *)contentsAtPath:(NSString *)path;

获得文件内容

 #import<Foundation/Foundation.h>
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        //创建文件对象
        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"]);
       
        //2)获取指定目录下文件及子目录
        //使用递归的方式获取当前目录及子目录下的所有的文件及文件夹
        NSArray *subPaths = [fm subpathsAtPath:dirPath];
       
        //subpathsOfDirectoryAtPath 不是使用递归的方式获取的
        subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil];
        NSLog(@"subPaths = %@",subPaths);
       
       
       
        //3)获取指定目录下的文件及目录信息(不在获取后代路径)
        subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil];
        NSLog(@"subPaths = %@",subPaths);
       
     
    }
    return 0;
}

四、NSFileManager文件操作

- (BOOL)createDirectoryAtPath:(NSString *)pathwithIntermediateDirectories:(BOOL) createIntermediates attributes:(NSDictionary*)attributes error:(NSError **)error;

只能创建文件夹(createIntermediates为YES代表自动创建中间的文件夹) 注意如果要创建的目录已经存在,则本次创建失败

- (BOOL)copyItemAtPath:(NSString *)srcPathtoPath:(NSString *)dstPath error:(NSError **)error;


拷贝,如果目标目录已经存在同名文件,则无法拷贝

- (BOOL)moveItemAtPath:(NSString *)srcPathtoPath:(NSString *)dstPath error:(NSError **)error;


移动(剪切)  

- (BOOL)removeItemAtPath:(NSString *)patherror:(NSError **)error;

删除

- (BOOL)createFileAtPath:(NSString *)pathcontents:(NSData *)data attributes:(NSDictionary *)attr;


创建文件
(NSData是用来存储二进制字节数据的)

#import <Foundation/Foundation.h>
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建文件管理对象
        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 = [fmcreateDirectoryAtPath:createDirPath withIntermediateDirectories:YESattributes:nil error:nil];
//       
//        if (isYES) {
//            NSLog(@"成功");
//        }
       
        //如何创建文件
        NSString *str = @"每当我错过一个女孩,我就向山上放一块砖,于是就有了长城";
        //writeToFile
//        fm createFileAtPath:@"路径" contents: NSData类型的数据 attributes:文件的属性的字典
        //创建NSData?  是一个处理二进制数据的类
        //NSString -----> NSData
       
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        BOOL isYes;
//        // createFileAtPath 创建文件
//        isYes = [fmcreateFileAtPath:createDirPath contents:data attributes:nil];
//        NSLog(@"isYes = %d",isYes);
       
        //如何copy文件
//        NSString *targetPath =@"/Users/zhaoxiaohu/Desktop/aaa/ccc/love.txt";
//        [fm copyItemAtPath:createDirPathtoPath:targetPath error:nil];
       
         NSString *targetPath = @"/Users/zhaoxiaohu/Desktop/aaa/love.txt";
//        //如何移动文件
//        [fm moveItemAtPath:createDirPathtoPath:targetPath error:nil];
       
        //如何删除文件
        [fm removeItemAtPath:targetPath error:nil];
       
    }
    return 0;
}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值