一,概述
NSFileManager类主要对文件的操作(删除,修改,移动,复制等);
NSFileHandle类主要对文件内容进行读取和写入操作NSFileHandle处理文件的步骤
1.创建一个NSFileHandle对象2.对打开的文件进行I/O操作
3.关闭文件
可以使用NSFileHandle做文件的断点续传。
二,常用方法
创建方法
+ (id)fileHandleForReadingAtPath:(NSString *)path 打开一个文件准备读取
+ (id)fileHandleForWritingAtPath:(NSString *)path 打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPath:(NSString *)path 打开一个文件准备更新
-(NSData *)availableData;//从设备或通道返回可用的数据
-(NSData *)readDataToEndOfFile;//从当前的节点读取到文件末尾
-(NSData *)readDataOfLength:(NSUInteger)length;//从当前节点开始读取指定的长度数据
-(unsigned long long)offsetInFile://获取当前文件的偏移量
-(unsigned long long)seekToEndOfFile;//跳到文件尾
-(void)writeData:(NSData *)data;//写入数据
-(void)truncateFileAtOffset:(unsigned longlong)offset;//将文件的长度设置为offset字节
-(void)closeFile;//关闭文件
向文件追加数据
NSString *homePath = NSHomeDirectory();
NSString *sourcePath = [homePath stringByAppendingPathComponent:@”需要追加数据的文件路径”];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:sourcePath];
[fileHandle seekToEndOfFile]; //将节点跳到文件末尾
NSString *str = @”追加的数据”;
NSData *stringData = [strdataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:stringData]; //追加写入数据
[fielHandle closeFile];
定位数据
NSFileManager *fm = [NSFileManager defaultManager];
NSString *content = @”abcdefghijklmn”;
[fm createFileAtPath:path contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
//获取数据长度
NSUInteger length = [[fileHandle availableData] length];
//偏移量但文件的一半
[fileHandle seekToFileOffset:length/2];
//从一半开始将数据凑到文件最后
NSData *data = [fileHandle readDataToEndOfFile];
[fileHandle closeFiel];<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
复制文件
NSFileHandle *infile, *outfile;//输入文件,输出文件
NSData * buffer;//读取的缓冲数据
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *homePath = NSHomeDirectory();
NSString *sourcePath = [homePath stringByAppendingPathComponent:@”testfile.text”]; //源文件路径
NSString *outPath = [homePath stringByAppendingPathComponent:@”outfile.text”]; //输出文件路径
BOOL success = [fileManager createFileAtPath:outPath content:nil attributes:nil]; //创建输出文件
If(!success){
return NO;
}
outfile = [NSFileHandle fileHandleForWritingAtPath:outPath];
infile = [NSFileHandle fileHandleForReadingAtPath:sourcePath];
NSData *data = [infile readDataToEndOfFile]; //读取源文件内容
[outfile writeData:data]; //写入内容
[oufile closeFile];
[infile closeFile];
参考:
点击这里