IOS之NSFileManager 和NSFileHandle

  在现阶手机app的临时缓存文件渐渐增多,在app开发中对于移动设备文件的操作越来越多,我们IOS中对于文件的操作主要涉及两个类NSFileManager 和NSFileHandle,下面我们就看看如何使用这两个类:

1、文件创建

//初始化一个NSFileManager类defaultManager方法为单例模式,通过单例模式进行初始化
        NSFileManager  * fileManager =[NSFileManager defaultManager];
        
        //拼接路径
        NSString * path=NSHomeDirectory();
        path=[path stringByAppendingPathComponent:@"deskTop/date.txt"];
        
        //创建文件
        BOOL flag=[fileManager createFileAtPath:path contents:nil attributes:nil];
        if(flag){
            NSLog(@"文件创建成功");
        }else{
            NSLog(@"文件创建失败");
        }

2、创建目录

NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * path=NSHomeDirectory();
        path=[path stringByAppendingPathComponent:@"deskTop/pro/cpp"];
        BOOL flag=[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
        
        if(flag){
            NSLog(@"创建成功");
        }else{
            NSLog(@"创建失败");
        }

3、删除文件和目录

 NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * rootPath=NSHomeDirectory();
        NSString * dirPath=[rootPath stringByAppendingPathComponent:@"deskTop/newFolder"];
        
        NSArray * array=[fileManager contentsOfDirectoryAtPath:dirPath error:nil];
        for(NSString * str in array){
            
            NSString * newPath=[dirPath stringByAppendingPathComponent:str];
            BOOL flag=[fileManager removeItemAtPath:newPath error:nil];
            if(flag){
                NSLog(@"删除成功");
            }else{
                NSLog(@"删除失败");
            }
        
        }

对于文件的操作有很多方法我们为提及到,我们可以看下官方的API里面有很多我们可能会用到的方法

 //将一个文件复制到另一个文件
 [fileManager copyItemAtPath:path1 toPath:path2 error:nil];
        
  //将一个文件移动到另一个文件
 [fileManager moveItemAtPath:path1 toPath:path2 error:nil];
  //获取文件里面的内容
 NSData * readData=[fileManager contentsAtPath:path]

  案例:我们这里可以做一个例子如何计算一个文件里面的所有行数,思路:我们首先需要读取文件里面的所有信息内容,统计行数我们只需要统计文件里的换行符的个数即可,实例如下所示:

NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * rootPath=NSHomeDirectory();
        NSString * dirPath=[rootPath stringByAppendingPathComponent:@"deskTop/newFolder/main.m"];
        
        NSData * data=[fileManager contentsAtPath:dirPath];
        NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        int count=(int)[str componentsSeparatedByString:@"\n"].count;
        
        NSLog(@"当前的总行数为%d",count);

4、文件写入

在文件的读写操作过程中我们用的最多的是NSFileHandler,我们通过该类进行文件操作

   //初始化一个用于写入的文件句柄
        NSFileHandle * fileHandle=[NSFileHandle fileHandleForWritingAtPath:filePath];
  
        NSString * str=@"pppppppppppp";
        
       //将文件光标移动到文件的最后位置
        [fileHandle seekToEndOfFile];
        NSData * data=[str dataUsingEncoding:NSUTF8StringEncoding];
        
        //写入数据
        [fileHandle writeData:data];
        
        //用完之后需要关掉
        [fileHandle closeFile];

5、文件的读取

  NSFileHandle * fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];
        //读取到文件的末尾
        NSData * data= [fileHandle readDataToEndOfFile];
        //定位光标的位置
        [fileHandle seekToFileOffset:2];
        //查询该文件可用数据的个数
        [fileHandle availableData];
        //读取指定长度的文件
        NSData * data=[fileHandle readDataOfLength:3];
       NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
//关闭句柄
       [fileHandle closeFile];

 

作者: 杰瑞教育
出处: http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:JRedu技术交流
 

转载于:https://www.cnblogs.com/jerehedu/p/4870765.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值