zoukankan      html  css  js  c++  java
  • 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:@"
    "].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技术交流
     
  • 相关阅读:
    zznuoj 2173 春天的英雄梦
    zznuoj 2171: 春天的致富梦
    zznuoj 2169: 春天的打水梦
    zznuoj 2168 大家好 我是水题
    西安赛打铁队检讨书
    B-number HDU
    Bomb HDU
    CodeForces
    1140
    Frequent Subsets Problem
  • 原文地址:https://www.cnblogs.com/jerehedu/p/4870765.html
Copyright © 2011-2022 走看看