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/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:

时间: 2024-11-25 07:08:50

IOS之NSFileManager 和NSFileHandle的相关文章

ios NSFileManager和NSFileHandle(附:获取文件大小 )

转自 http://blog.csdn.net/zhibudefeng/article/details/7795946 //file 文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path                从文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr      向一个文件写入数据 -(BOOL)rem

黑马程序员——Foundation——NSFileManager和NSFileHandle

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- //NSFileManager#import <Foundation/Foundation.h> #define PATH @"/Users/fengze/Desktop" int main(int argc, const char * argv[]) { @autoreleasepool { //创建 file manager对象 NSFileManager *fm =

NSFileManager和NSFileHandle

//file 文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path                从文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr      向一个文件写入数据 -(BOOL)removeFileAtPath: path handler: handler   删除一个文件 -(BOOL)movePat

【非凡程序员】 OC第十七节课 文件操作(NSFileManager和NSFileHandle)

文件操作 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...        NSLog(@"Hello, World!");                //----------- NSFileManager---------//                //实例化

【OC学习-23】NSFileManager和NSFileHandle的注意事项和常用操作归纳

说明: a:NSFileHandle只能打开现成的文件,所以如果是新文件则需要NSFileManager先创建新文件: b:打开一个文件就后,就需要关闭一个文件: c:根据不同的要求可能要设定不同的偏移量(即光标所在位置),可以通过移动到开头或结尾,也可以先获取当前位置然后增加和减少多少字节来移动: d:文件路径是NSString对象,可以用stringByAppendingPathComponent+文件全称方法构造一个完整的文件路径: e:往文件里面写的内容是NSData,如果是其他的格式则

iOS中NSFileManager文件常用操作整合

//获取Document路径 + (NSString *)getDocumentPath { NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [filePaths objectAtIndex:0]; } //获取Library路径 + (NSString *)getLibraryPath { NSArray *filePaths

NSFileManager和NSFileHandle(附:获取文件大小 )

//file 文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path 从文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 向一个文件写入数据 -(BOOL)removeFileAtPath: path handler: handler 删除一个文件 -(BOOL)movePath: from toPath: to han

iOS开发——Swift篇&amp;文件,文件夹操作

文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍历一个目录下的所有文件 1 //假设用户文档下有如下文件和文件夹[test1.txt,fold1/test2.txt] 2 let manager = NSFileManager.defaultManager() 3 let urlForDocument = manager.URLsForDirectory

OC-NSFileManager和NSFileHandle的使用

对于objective-c中的有关文件目录的操作和文件的操作. 通过一道习题来熟悉NSFileManager和NSFileHandle中的方法的使用. 本题原意:将指定目录下所有后缀名为XXX(可以自己输入)的文件中字符串为@"him"(可以自己输入)改为@"me"(可以自己输入) 1.首先新建了一个文件解析类ReplaceStringInDirectory.h @interface ReplaceStringInDirectory : NSObject /** *