NSFileHandle
/*
文件处理句柄要完成的工作: 相当于C中的文件操作,诸如 打开,读,写,关闭,修改文件偏移量等行为
类名: NSFileHandle
注意: 操作句柄时,重点把握文件的偏移量在哪个位置
重点方法:
1,类方法创建句柄 fileHandleForXXX 可读,可写,读写
2, 读句柄,readXXX
3, 写句柄,writeXXX
4, 修改偏移量: seekXXX
5, 获取偏移量: offsetXXX
6, 最后要将句柄关闭, closeFile
*/
#define PATH @"/Users/wenhua/Desktop/text.txt"
// text.txt内容为:1234567890abcdefghijklmnopqrstuvwxyz
void readFileByHandle(void)
{
//新建一个文件句柄对象
// NSFileHandle * fh = [[NSFileHandle alloc]init];
// 打开一个文件,生成一个句柄, 对应c中的 fopen, “r”
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:PATH];
// 读文件,读10个字节, 对应c中的, fread
NSData* data = [fh readDataOfLength:10];
NSLog(@"%@", [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);//1234567890
//第二次读
NSData *data2 = [fh readDataOfLength:10];
NSLog(@"第二次读:%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);// abcdefghij
//从当前偏移量开始读到文件末尾
NSData* dataEnd = [fh readDataToEndOfFile];
NSLog(@"读到文件末尾:%@",[[NSString alloc]initWithData:dataEnd encoding:NSUTF8StringEncoding]);
//修改文件偏移量,对应c中的 fseek
[fh seekToFileOffset:0];
//第三次读
NSData *data3 = [fh readDataOfLength:10];
NSLog(@"在修改文件偏移量之后,再读:%@",[[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding]);
//将文件偏移量置到文件末尾
[fh seekToEndOfFile];
//第四次读
NSData *data4 = [fh readDataOfLength:10];
NSLog(@"将文件偏移量置到文件末尾,再读:%@",[[NSString alloc]initWithData:data4 encoding:NSUTF8StringEncoding]);
// 关闭文件句柄 对应c中的 fclose
[fh closeFile];
}
void writeFileByHandle(void)
{
//写打开一个文件,只能写,不能读 fopen "w"
NSFileHandle * fh = [ NSFileHandle fileHandleForWritingAtPath:PATH];
//将文件偏移量置到末尾,防止覆盖以前的内容
[fh seekToEndOfFile];
//写文件 fwrite
[fh writeData:[@"wenhua" dataUsingEncoding:NSUTF8StringEncoding]];
//在只写打开的情况下不能读句柄
// NSData* data = [fh readDataToEndOfFile];
// NSLog(@"data:%@",data);
[fh closeFile];
}
void rwFileByHandle(void)
{
//可读可写打开 fopen "a"
NSFileHandle *fh = [ NSFileHandle fileHandleForUpdatingAtPath:PATH];
NSLog(@"可读可写打开后,默认偏移量为:%llu", [fh offsetInFile]);// 0
//全部读完
NSData* data=[fh readDataToEndOfFile];
NSLog(@"data:%@", [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
//查看偏移量
NSLog(@"全部读完之后,偏移量为:%llu",[fh offsetInFile]);
//写文件
[fh writeData:[@"66666666666666666" dataUsingEncoding:NSUTF8StringEncoding ]];
//查看偏移量
NSLog(@"全部读完之后,偏移量为:%llu",[fh offsetInFile]);
[fh seekToFileOffset:0];
NSData* data2 =[fh readDataToEndOfFile];
NSLog(@"写完66666之后,再读:data2:%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);
[fh closeFile];
}
NSFileHandle的更多相关文章
- OC NSFileHandle(文件内容操作)
OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //file ...
- 【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)
1.文件管理器(NSFileManager) 1> 主要作用及功能方法 主要作用:此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 功能方法: 2> 创建文件夹 创建所 ...
- ios NSFileManager和NSFileHandle(附:获取文件大小 )
转自 http://blog.csdn.net/zhibudefeng/article/details/7795946 //file 文件操作 NSFileManager 常见的NSFileMana ...
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...
- 读取和写入 文件 (NSFIleManger 与 NSFileHandle)
读取和写入 文件 //传递文件路径方法 -(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath { self = [su ...
- NSFileHandle 、 沙箱机制 、 属性列表
1 使用NSFilehandle进行数据读写 1.1 问题 NSFileManager用于实现对文件的操作,而NSFileHandle是IOS提供的对文件内容(二进制数据)进行操作的类,例如数据的读写 ...
- UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)
一.文件管理器与文件连接器之间的区别 文件管理器(NSFileManager) 此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 文件连接器(NSFileHandle) 此类主要是 ...
- IOS的XML文件解析,利用了NSData和NSFileHandle
如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...
- NSFileHandle 和 NSFileManager的一些用法
文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path 从文件中读取数据 -(BOOL)createFileAtPat ...
随机推荐
- Entity Framework想说爱你不容易,这么多的报错,这么多的限制,该如何解决?
首先看一下采用MODEL FIRST的方式设计的实体模型对象关系图: 注意:EntityOne中有导航属性:EntityTwo 在如下代码中的几种情况进行新增操作,均会报错,新增都不会成功: stat ...
- 解决Fedora解压文件产生乱码的问题
最近有发现在使用Linux的时候,之前也遇到过在ubuntu下,最后ubuntu貌似在原生下优化了这个问题,现在换到了fedora上的时候问题又出现了,解压出来的文件中文乱码. 为了在linux下可以 ...
- winform中ComboBox利用AutoComplete属性实现模糊查询(有缺陷)
上一篇文章是用ComboBox里面的原生事件实现模糊查询,操作比较灵活一些,但是收到评论说,利用AutoComplete属性就可以实现模糊查询,但是据本人所了解,AutoComplete虽然能够方便的 ...
- PHP类和对象等代码说明
1.定义和创建类和对象: 定义类要使用class关键字.例如:class 类名{//属性和方法} 创建对象使用new关键字.例如: $p1 = new 类名;,可以基于一个类创建多个对象. 2. 类属 ...
- ab网站压力测试
ab网站压力测试命令的参数.输出结果的中文注解 permalink 以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了.就是APACHE自带的测试工具AB( ...
- iTextSharp快速使用指南
前言 最近公司一直使用iText开发PDF报表,使用一段时间之后发现iText这个类库虽然是庞大无比,但作为程序猿我们不需要知道所有的类和方法,我们只需要知道如何使用即可. 所以这篇文章就是告诉大家如 ...
- HTML标签小结
HTML:超文本标记语言 超:超链接 超文本:超出文本(可加入图片,文字,音频视频播放器) 标记:标签 HTML文档 以<html...>开始 , 以</html> ...
- POJ 1061 青蛙的约会 扩展欧几里得
扩展欧几里得模板套一下就A了,不过要注意刚好整除的时候,代码中有注释 #include <iostream> #include <cstdio> #include <cs ...
- Linux下安装DB2_v9.7详细教程
一:平台 1:HP服务器 cpu:Inter (R) Xeon (R) E5606 2.13G 磁盘:本地磁盘外加存储 2:操作系统 RedHet 5.4 64位 内核:2.6.18-194.1.AX ...
- Spring MVC处理异常的4种方式
http://blog.csdn.net/ufo2910628/article/details/40399539 http://my.oschina.net/CandyDesire/blog/3333 ...