NSFileHandle

对文件内容的操作

NSFileHandle

文件句柄

1 NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@""]; //以只读方式打开文件生成文件句柄 

内存:内部存储器;硬盘:外部存储设备。 从硬盘到内存(从文件到内存)叫做读,从内存到文件(硬盘)叫做写。

1 //读取文件内容的两种方式
2 NSData * data = [fh readDataOfLength:3];
3 //继续上面3个字节后,继续读取5个字节
4 data = [fh readDataOfLength:5];

如果文件内容不是特别的多,可以用下面的方法直接读取全部内容

1 //如果文件内容不是特别的多,可以用下面的方法直接读取全部内容
2 data = [fh readDataToEndOfFile];
3 NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

除了上面读的方法,还有写的方法。

1 NSFileHandle * fh = [NSFileHandle fileHandleForWritingAtPath:@""]; //以只写方式打开文件生成句柄
2 [fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];//直接覆盖掉前面相应数量的字符

类似C语言一样,直接将文件清空,然后将内容写入到文件里面。首先需要将文件字节截短至0

1 [fh truncateFileAtOffset:0];
2 //将文件内容截断至0字节
3 [fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];

修改文件,将新的内容添加至已有内容的末尾。

1 [fh seekToEndOfFile]; //将读写指针设在文件的尾端
2 [fh writeData:[@"XXX" dataUsingEncoding:NSUTF8StringEncoding]];

3、归档

归档:把平时使用的变量或者对象以一定的格式写入文件中进行存储,等到需要的时候直接读取出来就能还原成原对象的格式。

 1 #define PATH @"/Users/liyang/Desktop/Test/file.plist"
 2
 3 NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",nil];
 4 [dict writeToFile:PATH atomically:YES];
 5
 6 NSDictionary * dict = [[NSDictionary alloc] initWithContentsOfFile:PATH];
 7 [NSLog @"%@",dict];
 8
 9 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil];
10 [array writeToFile:PATH atomically:YES];

如果处理的数据较大的时候,需要一个辅助的类似NSKededArchieve。

1 NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",nil];
2 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil];
3 NSMutableData * data = [[NSMutableData alloc] init];
4 NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMudatableData:data];
5 [archiver encodeObject:array forKey:@"array"];
6 [archiver encodeObject:dict forKey:@"dict"];
7 [archiver finishEncoding];
8 [data writeToFile:PATH atomically:YES];

归档后的内容看上去都是乱码,可以用反归档对象NSKeyedUnarchiver获取plist文件里面的内容

1 //获取plist的内容
2 NSData * data = [[NSData alloc] initWithContentsOfFile:PATH];
3 NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
4 NSArray * array = [unarchiver decodeObjectForKey:@"array"];
5 NSLog(@"%@",array)
时间: 2024-10-18 20:54:50

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

iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)

1.文件管理器(NSFileManager) 1> 创建文件夹 创建所需的方法在头文件的声明: /* createDirectoryAtPath:withIntermediateDirectories:attributes:error: creates a directory at the specified path. If you pass 'NO' for createIntermediates, the directory must not exist at the time this

NSFileHandle 可以对图片 其他的进行读写

// // main.m // NSFileHandler // // Created by MAC on 15/12/26. // Copyright © 2015年 MAC. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // NSFileHandler 可以读取图片 接口 管道 //读取 NSStr

NSFileHandle 、 沙箱机制 、 属性列表

1 使用NSFilehandle进行数据读写 1.1 问题 NSFileManager用于实现对文件的操作,而NSFileHandle是IOS提供的对文件内容(二进制数据)进行操作的类,例如数据的读写.数据追加.数据拷贝等.本案例演示使用NSFileHandle对文件数据进行基本的读写操作. 1.2 方案 首先使用NSFileManager创建一个文件,然后创建一个NSData类型的对象data,存储一个字符串数据,该数据就是需要写入文件的数据. 再使用方法fileHandleForWritin

NSFileHandle&amp;&amp;NSFileManage

/***********  读取全部文件内容 ************/ NSFileHandle *handle1 = [NSFileHandle fileHandleForReadingAtPath:filePath];//返回读文件的fileHandle NSData *data1 = [handle1 readDataToEndOfFile];//读取到文件末尾,得到文件中的数据 NSString *readString=[[NSString alloc]initWithData:dat

文件句柄NSFileHandle

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3e1e81 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 } p.p4 { margin: 0.0p

NSFileHandle&amp;NSFileManager

NSFileHandle+(id)fileHandleForReadingAtPath:(NSString *)path;//打开文件准备读取+ (id)fileHandleForReadingAtPath:(NSString *)path;//打开文件准备写入+ (id)fileHandleForWritingAtPath:(NSString *)path;//打开文件准备更新(读取,更新)+ (id)fileHandleForUpdatingAtPath:(NSString *)path;/

NSFileHandle的用法

// // FileInfo.m // MemoryManage // // Created by macos on 14-8-10. // Copyright (c) 2014年 macos. All rights reserved. // #import "FileDemo.h" @implementation FileDemo -(id) init { if (self = [super init]) { NSFileManager *mgr =[NSFileManager de

NSFileManager和NSFileHandle

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