6月19日 NSFileHandle文件类的常用方法

来源:互联网 发布:unity3d培训多少钱 编辑:程序博客网 时间:2024/05/02 11:30


 

 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;//从当前节点开始读取指定的长度数据

 

 -(void)writeData:(NSData *)data;//写入数据

 

 -(unsigned long long)offsetInFile://获取当前文件的偏移量

 

 -(unsigned long long)seekToEndOfFile;//跳到文件尾

 

 -(void)truncateFileAtOffset:(unsigned longlong)offset;//将文件的长度设置为offset字节

 

 -(void)closeFile;//关闭文件

 

 

 

 (二)

 

 //追加数据

 

 NSString *homePath = NSHomeDirectory();

 

 NSString *sourcePath = [homePathstringByAppendingPathComponent:@”需要追加数据的文件路径”];

 

 NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:sourcePath];

 

 //将节点跳到文件末尾

 

 [fileHandle seekToEndOfFile];

 

 NSString *str = @”追加的数据”;

 

 NSData *stringData = [strdataUsingEncoding:NSUTF8StringEncoding];

 

 //追加写入数据

 

 [fileHandle writeData:stringData];

 

 [fielHandle closeFile];

 

 

 

 //定位数据

 

 NSFileManager *fm = [NSFileManagerdefaultManager];

 

 NSString *content = @”abcdefghijklmn”;

 

 [fm createFileAtPath:path contents:[contentdataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

 

 NSFileHandle *fileHandle = [NSFileHandlefileHandleForReadingAtPath:path];

 

 //获取数据长度

 

 NSUInteger length = [[fileHandleavailableData] length];

 

 //偏移量但文件的一半

 

 [fileHandle seekToFileOffset:length/2];

 

 //从一半开始将数据凑到文件最后

 

 NSData *data = [fileHandlereadDataToEndOfFile];

 

 [fileHandle closeFiel];

 

 

 

 //复制文件

 

 NSFileHandle *infile, *outfile;//输入文件,输出文件

 

 NSData *buffer;//读取的缓冲数据

 

 NSFileManager *fileManager = [NSFileManagerdefaultManager];

 

 NSString *homePath = NSHomeDirectory();

 

 //源文件路径

 

 NSString *sourcePath = [homePathstringByAppendingPathComponent:@”testfile.text”];

 

 //输出文件路径

 

 NSString *outPath = [homePathstringByAppendingPathComponent:@”outfile.text”];

 

 //创建输出文件

 

 BOOL success = [fileManagercreateFileAtPath:outPath content:nil attributes:nil];

 

 If (!success){

 

 returnNO;

 

 }

 

 outfile = [NSFileHandlefileHandleForWritingAtPath:outPath];

 

 infile = [NSFileHandlefileHandleForReadingAtPath:sourcePath];

 

 //读取源文件内容

 

 NSData *data = [infile readDataToEndOfFile];

 

 //写入内容

 

 [outfile writeData:data];

 

 [oufile closeFile];

 

 [infile closeFile];