NSFileManager和文件的判断操作、获取目录、文件创建和目录创建。

来源:互联网 发布:井泵电机数据 编辑:程序博客网 时间:2024/05/21 08:39

/*首先,创建NSFileManagment对象

 *接着,将ceshi文件夹拖到桌面上使用。可以下载ceshi文件百度网盘:http://pan.baidu.com/s/1mgms8SK

 *==============判断操作=============

 *

 *  1)判断是文件或文件夹是否存在

 *  2) 判断是文件还是目录

 *  3)判断是否可读

 *  4)判断是否可写

 *  5)判断是否可删除

 *

 * 对应下面的 isOK()方法

 *

 *

 *++++++++++++++获取目录方式++++++++++++++

 *

 *  1)获取指定路径下,所有的文件或者文件夹路径

 *  2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径

 *

 * 对应下面的 getDirectory()方法

 *

 *

 *^^^^^^^^^^^^^^文件创建和目录创建^^^^^^^^^^^^^^

 *

 *  1)文件创建

 *  2)获得文件属性方式

 *  3)目录创建,

 *  4)拷贝文件

 *  5)移动文件

 *  6)删除文件

 *

 * 对应下面的 creatAndOptions()

*/

/*首先,创建NSFileManagment对象,  *接着,将ceshi文件夹拖到桌面上使用。 *==============判断操作============= * *  1)判断是文件或文件夹是否存在 *  2) 判断是文件 还是目录 *  3)判断是否可读 *  4)判断是否可写 *  5)判断是否可删除 * * 对应下面的 isOK() 方法 * * *++++++++++++++获取目录方式++++++++++++++ * *  1)获取指定路径下,所有的文件或者文件夹路径 *  2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径 * * 对应下面的 getDirectory() 方法 * * *^^^^^^^^^^^^^^文件创建和目录创建^^^^^^^^^^^^^^ * *  1)文件创建 *  2)获得文件属性方式 *  3)目录创建, *  4)拷贝文件 *  5)移动文件 *  6)删除文件 * * 对应下面的 creatAndOptions()*/#import <Foundation/Foundation.h>//1判断操作声明void isOK();//2获取目录方式void getDirectory();//3文件创建和操作void creatAndOptions();/*文件来回移动时用到的全局变量。文件存在的时候,将拷贝的目标文件删除掉使用。*/NSInteger flag;int main(int argc, const char * argv[]) {    @autoreleasepool {            //1 isOK()函数执行    //   isOK();            //2 getDirectory()函数执行    //   getDirectory();        //3 creatAndOptions()函数执行        creatAndOptions();        }    return 0;}#pragma mark========判断操作==========void isOK(){    //创建NSFileManager对象 ===>>下面创建的是单例对象,    NSFileManager *fm = [NSFileManager defaultManager];    //拼接一个文件路径  NSString *path = @"/Users/这里要变成你的用户名/Desktop/.DS_Store";    //NSString *str = @"/Users/这里要变成你的用户名/Desktop";    //1)判断是文件是否存在  (主要是看路径指的是目录还是文件)    BOOL isYes;    isYes = [fm fileExistsAtPath:path];    if (isYes) {        NSLog(@"文件目录或文件存在 ");    }else{        NSLog(@"文件目录获文件不存在 ");    }            //2)判断是文件还是目录    BOOL isDir;#warning 和上面的  fileExistAtPath:  要区分开;    [fm fileExistsAtPath:path isDirectory:&isDir];    if (isDir) {        NSLog(@"这是个****文件夹****");    }else{        NSLog(@"这是个****文件**** ");    }        //3)判断文件是否可读    BOOL isRead;    isRead = [fm isReadableFileAtPath:path];    if (isRead) {        NSLog(@"这个文件或者文件夹++++可读++++ ");    }else{        NSLog(@"这个文件或者文件夹++++不可读++++");    }        //4)文件是否可写    BOOL isWrite;    isWrite = [fm isWritableFileAtPath:path];    if (isWrite) {        NSLog(@"这个文件或者文件夹----可写----");    }else{        NSLog(@"这个文件或者文件夹----不可写----");    }        //5)文件是否可删    BOOL isDel;    isDel =   [fm isDeletableFileAtPath:path];    if (isDel) {        NSLog(@"这个文件或者文件夹^^^^可删^^^^");    }else{        NSLog(@"这个文件或者文件夹^^^^不可删^^^^");    }    }#pragma mark+++++++获取目录方式++++++++void getDirectory(){    //创建NSFileManager对象    NSFileManager *fm = [NSFileManager defaultManager];    //定义路径   // NSString *path = @"/Users/这里要变成你的用户名/Desktop";      //自己在桌面建立了ceshi文件夹,进行的测试      NSString *path =@"/Users/这里要变成你的用户名/Desktop/ceshi";    //1)获取指定路径下,所有的文件或者文件夹路径    NSError *errDir = nil;    NSArray *contents = [fm contentsOfDirectoryAtPath:path error:&errDir];        if (nil == errDir) {        NSLog(@"获得目录下文件以及文件夹\n %@",contents);    }else{        NSLog(@"目录获得失败\n 错误: %@",errDir);    }        //2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径       //方式一:以递归方式来获取。(不推荐使用,因为在手机上可能会占内存)    NSArray *subPathAtPathReturnArray = [fm subpathsAtPath:path];    NSLog(@"以递归方式获取\n %@",subPathAtPathReturnArray);           //方式二:非递归方式来获取    NSError *errSubPath = nil;    NSArray *subPathOfDirectoryReturnArray = [fm subpathsOfDirectoryAtPath:path error:&errSubPath];    if (nil == errSubPath) {        NSLog(@"非递归方式获取\n %@",subPathOfDirectoryReturnArray);    }else{        NSLog(@"获取失败");    }    }#pragma mark^^^^^文件创建和目录创建^^^^^void creatAndOptions(){    //创建NSFileManager对象    NSFileManager *fm = [NSFileManager defaultManager];    //定义路径(这里面要有该路径,而且要带着你要写入文件的文件名。)    NSString *path =@"/Users/这里要变成你的用户名/Desktop/ceshi/youyi.txt";#warning 如果文件没有存在,文件创建和获取文件属性不能通时进行。    //1文件创建    //1)要存储在文件的内容    NSString *contentStr = @"每当我错过一个女孩,我就往山上放一块砖,于是乎有了长城";    //2)把字符串转化为data类型   (目的:用来存放到文件中)    NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding];    //3)创建文件    BOOL isCtreat;    isCtreat = [fm createFileAtPath:path contents:data attributes:nil];    if (isCtreat) {        NSLog(@"文件创建###成功###");    }else{        NSLog(@"文件创建###失败###");    }           //2获取文件属性    NSError *errAttrbute = nil;    //自己创建的ceshi/11.txt文件    NSString *pathAttribute = @"/Users/这里要变成你的用户名/Desktop/ceshi/attribute.txt";    NSDictionary *fileAttribute = [fm attributesOfItemAtPath:pathAttribute error:&errAttrbute];    if (nil == errAttrbute) {        NSLog(@"文件属性获得成功,属性内容如下\n %@",fileAttribute);    }else{        NSLog(@"文件属性获得失败");    }        //3 目录的创建  withIntermediateDirectories--是否补上没有的文件夹目录    BOOL isCreDirAt;    NSString *pathCreDirAt = @"/Users/这里要变成你的用户名/Desktop/ceshi/creatDirecr/";    NSError *errorDirectory = nil;    isCreDirAt = [fm createDirectoryAtPath:pathCreDirAt withIntermediateDirectories:YES attributes:nil error:&errorDirectory];    if (isCreDirAt) {        NSLog(@"文件夹创建成功");    }else{        NSLog(@"文件夹创建失败,失败原因:%@",errorDirectory);    }        //4 拷贝文件  (当目标路径已经有拷贝的文件时,这时提示拷贝错误。)    BOOL isCopy;    NSError *errorCopy = nil ;    //源文件路径    NSString *sourcePath = @"/Users/这里要变成你的用户名/Desktop/ceshi/copy.txt";    //目标文件路径    NSString *targerPath = @"/Users/这里要变成你的用户名/Desktop/ceshi/bbbb/copy.txt";        isCopy = [fm copyItemAtPath:sourcePath toPath:targerPath error:&errorCopy];    if (isCopy) {        NSLog(@"拷贝成功");    }else{        NSLog(@"拷贝出错,出错内容: %@",errorCopy);        if ([fm fileExistsAtPath:targerPath]) {            BOOL isExistsDel;            NSError *errorExistDirDel;            isExistsDel = [fm removeItemAtPath:targerPath error:&errorExistDirDel];            if (isExistsDel) {                NSLog(@"删除成功");            }else{                NSLog(@"删除失败 %@",errorExistDirDel);            }        }    }        //5 移动文件    BOOL isMove;    NSError *errorMove;    NSString *sourcePathMove = @"/Users/这里要变成你的用户名/Desktop/ceshi/move.txt";    //目标文件路径    NSString *targerPathMove = @"/Users/这里要变成你的用户名/Desktop/ceshi/bbbb/move.txt";    if ([fm fileExistsAtPath:sourcePathMove]) {        isMove = [fm moveItemAtPath:sourcePathMove toPath:targerPathMove error:&errorMove];        if (isMove) {            NSLog(@"移动文件成功,移动路径为: %@",targerPathMove);        }else{            NSLog(@"文件移动失败,失败原因 %@",errorMove);        }    }else{        isMove = [fm moveItemAtPath:targerPathMove toPath:sourcePathMove error:&errorMove];        if (isMove) {            NSLog(@"移动文件成功,移动路径为: %@",targerPathMove);        }else{            NSLog(@"文件移动失败,失败原因 %@",errorMove);        }    }    //6 删除文件    BOOL isDirDel;    NSError *errorDirDel;    NSString *delete = @"/Users/这里要变成你的用户名/Desktop/ceshi/delete.txt";    isDirDel = [fm removeItemAtPath:delete error:&errorDirDel];    if (isDirDel) {        NSLog(@"删除成功");    }else{        NSLog(@"删除失败 %@",errorDirDel);        NSString *deletPath = @"/Users/这里要变成你的用户名/Desktop/ceshi/delete.txt";        //1)要存储在文件的内容        NSString *contentStr = @"每当我错过一个女孩,我就往山上放一块砖,于是乎有了长城";        //2)把字符串转化为data类型   (目的:用来存放到文件中)        NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding];        //3)创建文件        BOOL isCtreat;        isCtreat = [fm createFileAtPath:deletPath contents:data attributes:nil];        if (isCtreat) {            NSLog(@"DeletPath文件创建###成功###");        }else{            NSLog(@"DeletPath文件创建###失败###");        }       }}


0 0