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

来源:互联网 发布:st单片机仿真器 编辑:程序博客网 时间:2024/05/20 06:38

------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
原创粉丝点击