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

/*首先,创建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文件创建###失败###");
        }
   
    }


}


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值