【黑马程序员】oc中的NSManager文件操作

---------- IOS培训java培训、期待与您交流! ----------


文件操作   是指通过程序,操作文件

读    文件->内存

写    内存->文件


文件操作分为:

1.对文件本身的操作

NSManager


2.对文件内容的操作

NSHandle


NSFileManager *fm=[NSFileManager defaultManager];

//创建一个单例的文件管理器对象


       

一,浅度遍历

        NSFileManager* fm=[NSFileManager defaultManager];

        //创建了一个单例的文件管理器对象

        NSError *error = nil;

        NSString *path = @"/Users/xiaojunquan/Documents/DaiMa";

        NSArray *array = [fm contentsOfDirectoryAtPath:path error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

        //我们称这样的遍历为浅度遍历

        NSLog(@"%@",array);


运行结果如下所示:

//        2015-03-04 17:31:49.526   文件操作[9389:264797] (

//                                                     ".DS_Store",

//                                                     0108,

//                                                     0117,

//                                                     0123,

//                                                     0125,

//                                                     0126,

//                                                     0127,

//                                                     0129,

//                                                     0206,

//                                                     OC0202

//                                                     )

//        Program ended with exit code: 0

//        

 


可以看到我们用contentsOfDirectoryAtPath:path 方法,得到的只是一个该文件目录下的  全部目录名


二,深度遍历

        

        NSArray * array1=[fm subpathsOfDirectoryAtPath:path error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

       NSLog(@"%@",array1);

这样的遍历我们称之为深度遍历。得到的是该目录下的所有目录名,包括子目录


如下所示,我们截取的一部分

2015-03-04 19:14:23.451 文件操作[24254:345336] (

    ".DS_Store",

    0108,

    "0108/.DS_Store",

    "0108/a.out",

    "0108/maxof3num.c",

    "0108/swap2num.c",

    "0108/\U904d\U5386\U6570\U7ec4.c",

    0117,

    "0117/a.out",

    "0117/test.c",

    "0117/upper.c",

    "0117/\U6307\U5411\U6307\U9488\U7684\U6307\U9488.c",

    0123,

    "0123/03.c",

    "0123/1.c",

    "0123/a.out",

    "0123/maxOfArry.c",

    "0123/test.c",

    "0123/while1.c",

    "0123/while2.c",

    "0123/\U5b57\U7b26\U4e32\U7ec3\U4e60.c",

    "0123/\U7ecf\U5178\U6307\U9488.c",

    0125,

    "0125/02.c",

    "0125/a.out",

    "0125/huiwen.c",

    "0125/strlink.c",

    "0125/test.c",

    "0125/\U6307\U9488\U4e0e\U5b57\U7b26\U4e32\U7ec3\U4e60.c",

    0126,

    "0126/03.c",

    "0126/04.c",

    "0126/99shengfa.c",

    "0126/pieAdd.c",

    "0126/\U5355\U5411\U94fe\U8868.c",

    0127,

    "0127/09.c",

    "0127/12.c",

    "0127/13.c",

    "0127/15.c",

    "0127/16\U7ed3\U6784\U4f53\U53d8\U91cf\U66f4\U6539.c",

    "0127/3.c",

    "0127/32.c",

    "0127/34.c",


三,创建目录(文件夹)

  创建文件夹 ,返回值是一个bool 类型。中间的withIntermediateDirectories 是传一个bool类型,表示是否创建中间文件夹。 如果设置为yes ,则当找不到该路径上的中间文件夹时,会自动帮我们创建该文件夹。如我们想创建一个dir文件夹,path路径下dir文件夹前多了一个middle,最后系统帮我们同时创建了两个文件夹 middle文件夹,以及middle文件夹下的dir文件夹。如果设置为no,则系统会找不到该文件,"The file “dir” doesn’t exist."。

   BOOL fileDir = [fm createDirectoryAtPath:[NSString stringWithFormat:@"%@/middle/dir",path]  withIntermediateDirectories:YES attributes:nil error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

       NSLog(@"%i",fileDir);

若创建成功,则返回1。如不成功,则报错。。

 Error Domain=NSCocoaErrorDomain Code=4      UserInfo=0x100403490 {NSFilePath=/Users/xiaojunquan/Documents/DaiMa/middle/dir, NSUnderlyingError=0x1004030c0 "The operation couldn’t be completed. No such file or directory"}



四,文件的创建

 //文件的创建

        // contents:要我们传一个NSDate * 我们通过字符串 dataUSIngEncoding存进数据

        BOOL fileDir2 = [fm createFileAtPath:[NSString stringWithFormat:@"%@/middle/dir/file",path] contents:[@"hello world" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

        NSLog(@"%i",fileDir2);


如果创建成功,则path/middle/dir目录下,会创建一个file文件,该文件存储的信息为:“hello world” 


五,文件的删除

        //文件的删除

      BOOL fileRem=[fm removeItemAtPath:[NSString stringWithFormat:@"%@/middle",path] error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

        NSLog(@"%i",fileRem);

如果删除成功就返回1,如果找不到path/middle下的文件或目录,则报错。



六,文件的复制

      

  //   文件的复制

        BOOL fileCopy=[fm copyItemAtPath:[NSString stringWithFormat:@"%@/middle/dir",path] toPath:[NSString stringWithFormat:@"%@/middle/dir2",path] error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

        NSLog(@"%i",fileCopy);


调用此方法,我们将path/middle/dir文件的内容,复制到path/middle/dir2 文件或文件夹当中。 找不到该文件则报错。



七,文件的移动


      //文件的移动

        BOOL fileMove=[fm moveItemAtPath:[NSString stringWithFormat:@"%@/middle/dir",path] toPath:[NSString stringWithFormat:@"%@/middle/dir2",path] error:&error];

        if (error) {

            NSLog(@"%@",error);

            exit(-1);

        }

        NSLog(@"%i",fileMove);

调用此方法,我们将path/middle/dir 文件夹下的内容移动到path/middle/dir2目录下。原目录原内容消失。 找不到该目录则报错。

        



        






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值