OC--文件管理

-----------文件管理----------------  

  1、文件管理类

       文件管理类:这是一个类,专门用来管理文件的        (通过单例)

        NSFileManager *manager = [NSFileManager defaultManager];

        NSString *path = @"/Users/Desktop/共享资料";

        //通过error可以得知是否成功获得目录里面内容  error:这个参数要写对象指针的地址

        NSError *error = nil;

        //获得目录下的文件内容  注意:1只能获取一层,2.要给全路径

        NSArray *array1 = [manager contentsOfDirectoryAtPath:path error:&error];

        //找后缀名为rtf的文件名

        for (NSString *name in array1) {

            if ([name hasSuffix:@".rtf"]) {

                NSLog(@"%@",name);

            }

        }

        //方法二

        //取文件的扩展名

        for (NSString *name in array1) {

            NSString *str = [name pathExtension];

            NSLog(@"%@",str);

        }

   //取路径的各个部分

        NSArray *comArr = [path pathComponents];

  //取当前目录下的所有文件

      //获取当前目录下面所有的文件(当前目录的文件及子文件夹内的文件) 可以获取多层  注意:应该是全路径

        NSArray *array2 = [manager subpathsOfDirectoryAtPath:path error:nil];          

     2、创建一个文件

        NSString *path = @"/Users/Desktop/共享资料";

     第一个参数:文件的路径

             第二个参数:文件的内容

             第三个参数:文件的属性,如果为空,那就是默认的属性

             //创建的文件名最好是新的,如果与原来的名字重名,就会将其覆盖

        BOOL isSuc = [manager createFileAtPath:path contents:nil attributes:nil];

   //获取当前文件的属性

        NSDictionary *dic = [manager attributesOfItemAtPath:path error:nil];

        //创建路径

        /**

        第一个:要创建的路径

         第二个:当为NO时,如果新创建的路径中间增加了原来没有的部分,就会不允许创建  当为YES时,会自动的允许增加,并创建

         */

  NSString *path1 = @"/Users/Desktop/共享资料/good/";

        BOOL isSuc1 = [manager createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];

   3、文件的移动、删除、拷贝 

   BOOL isSuc1 = [manager copyItemAtPath:path1 toPath:path2 error:nil];  //拷贝

        BOOL isSuc2 = [manager moveItemAtPath:path3 toPath:path4 error:nil];  // 移动

        BOOL isSuc3 = [manager removeItemAtPath:path4 error:nil];  //删除

-----------NSData--------

   NSData :表示二进制的数据  ---原因:存储,传输的数据都是二进制的。                 

        NSString *string = @"study";

        //字符串转为NSData类型

        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];              

        //NSData类型转为字符串型

        NSString *newString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];        

 ------打开文件----------

  oc打开方法:   文件句柄(NSFileHandle) :通过文件句柄操作有关文件内容的事情。

        //三种方式:只读,只写,读写

        //只读方式打开文件

        //1.创建句柄

        //NSFileHandle *handle = [[NSFileHandle alloc]init];

        //文件的路径

        NSString *path3 = @"/Users/Desktop/方法列表.rtf";

        NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path3];

        if (handle) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }        

        //只写方式打开文件

        NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:path3];       

        if (handle2) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }   

        //读写方式打开文件

        NSFileHandle *handle3 = [NSFileHandle fileHandleForUpdatingAtPath:path3];        

        if (handle3) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }

   ---读文件

        NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:path3];        

  //2.第一次读:从开始读length长度的字符

        NSData *data1 = [handle readDataOfLength:10];

        NSLog(@"%@",[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding]);

        

        //第二次读:以上一次的结尾为开始,读取10个字符

        NSData *data2 = [handle readDataOfLength:10];

        NSLog(@"%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);

        

        //第三次读 从上一次结束一直读到末尾

        NSData *data3 = [handle readDataToEndOfFile];

        NSLog(@"%@",[[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding]);

 

        清空文件

        [handle truncateFileAtOffset:0];

   回到文件的开始(或者某个位置)

        [handle seekToFileOffset:0];        

        只能回到开始

        [handle offsetInFile];        

        到结尾

        [handle seekToEndOfFile];        

        关闭文件(可省略)

       [handle closeFile];

   ---写文件

        注意:为了防止将原来的内容覆盖掉,所以1.要先到文件内容的末尾 2.开始写(除非你想要覆盖原内容)

        //到内容的末尾

        [handle seekToEndOfFile];        

        NSData *data = [@"our story" dataUsingEncoding:NSUTF8StringEncoding];        

        //写数据  注意:将数据写入缓存

        [handle writeData:data]; 

        //将数据写入磁盘

        [handle synchronizeFile];        

        //关闭文件(可以省略)

        [handle closeFile];

 

转载于:https://www.cnblogs.com/wscd/p/4178840.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值