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:];
//查询该文件可用数据的个数
[fileHandle availableData];
//读取指定长度的文件
NSData * data=[fileHandle readDataOfLength:];
NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
//关闭句柄
[fileHandle closeFile];
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

IOS之NSFileManager 和NSFileHandle的更多相关文章
- ios NSFileManager和NSFileHandle(附:获取文件大小 )
转自 http://blog.csdn.net/zhibudefeng/article/details/7795946 //file 文件操作 NSFileManager 常见的NSFileMana ...
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
How do you get the paths to these special sandbox directories? NSArray *NSSearchPathForDirectoriesIn ...
- iOS - OC NSFileManager 文件管理
前言 @interface NSFileManager : NSObject @interface NSFileHandle : NSObject <NSSecureCoding> NSF ...
- OC语言--NSFileManager& NSFileHandle
1.关于文件的介绍 ->什么是文件: 文件概念, 广义文件. 狭义文件(磁盘文件). 文件常见的使用操作(可用命令行演示文件操作的使用场景). ->什么是路径: 简单来说就是,在系统中,要 ...
- 高级UIKit-03(NSFileManager、NSFileHandle)
fileManager文件管理器 [day04_1_FileManager_Search] :查找文件 fileManager有一个方法可以判断文件是否是文件夹, fileExistsAtPath:i ...
- NSFileManager和NSFileHandle(附:获取文件大小 )
本文转载至:http://www.cnblogs.com/pengyingh/articles/2350345.html 天牛 感谢原创作者的硕果 //file 文件操作 NSFileManager ...
- iOS中NSFileManager文件常用操作整合
//获取Document路径 + (NSString *)getDocumentPath { NSArray *filePaths = NSSearchPathForDirectoriesInDoma ...
- NSFileManager和NSFileHandle使用
一.NSFileManager: 1.1.获取NSFileManager NSFileManager *manager = [NSFileManager defaultManager]; NS ...
- iOS NSFileManager对沙盒文件及目录添加删除操作
iOS 使用 NSFileManager对沙盒里面的文件和目录,增加,修改,删除操作: - (void)viewDidLoad { [super viewDidLoad]; self.title = ...
随机推荐
- Am335x SPI 驱动测试
内核版本:3.14.65 CPU:Am335x 1.编译内核: make menuconfig Device Drivers -> <*>SPI support -> < ...
- Django Template Language 模板语言
一.标签 tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例 {# 取variable中的第一个参数 #} {{ variab ...
- 汉化 的 空指针 bug
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha nulljava.lang.NullPointerException at com.an ...
- SSH项目整合基本步骤
SSH项目整合基本步骤 一.项目简介 该项目是由Spring4.Struts2 以及 Hibernate4 整合搭建的 web 项目,把Action分开编写,便于查看,使用JSTL.EL标签. 二.项 ...
- [BZOJ4699]树上的最短路(最短路+线段树)
https://www.cnblogs.com/Gloid/p/10273902.html 这篇文章已经从头到尾讲的非常清楚了,几乎没有什么需要补充的内容. 首先$O(n\log^2 n)$的做法比较 ...
- Android MediaCodec 的实例化方法
*由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec的实例化方法主要有两种: 1.使用 ...
- Qt线程外使用Sleep
一:方法1 QTime t; t.start(); while(t.elapsed()<1000){ QCoreApplication::processEvents();} 二:方法2 ...
- 浅析Windows系统调用——2种切换到内核模式的方法
http://shayi1983.blog.51cto.com/4681835/1710861/
- java 入门书籍(java7)
一.Java从入门到精通 <Java从入门到精通(第3版)>从刚開始学习的人角度出发,通过通俗易懂的语言.丰富多彩的实例.具体介绍了使用Java语言进行程序开发须要掌握的知识. <J ...
- andriod 浏览文件
protected void browse() { Intent it = new Intent(Intent.ACTION_GET_CONTENT); //创建动作为 "选取" ...