NSFileHandle

    NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等)

    NSFileHandle类主要对文件的内容进行读取和写入操作

NSFileHandle处理文件的步骤

    1:创建一个NSFileHandle对象

    2:对打开的文件进行I/O操作

    3:关闭文件对象操作

常用处理方法

+ (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)seekToFileOffset:(unsigned long long)offset; //跳转到指定文件的指定的偏移量的位置 - (void)truncateFileAtOffset:(unsigned long long)offset;  //设置文件长度 - (void)synchronizeFile;  //文件同步 - (void)closeFile;   //关闭文件

实例代码

1(对文件进行加入数据:):

    @autoreleasepool {
        NSString *homePath=NSHomeDirectory();         NSLog(@"%@",homePath);                  NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];         NSLog(@"%@",filePath);         NSFileHandle *fileHandle=[NSFileHandle fileHandleForUpdatingAtPath:filePath];                  [fileHandle seekToEndOfFile];         NSString *str=@"测试加入的数据为";         NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];         [fileHandle writeData:data];         [fileHandle closeFile];     }     return 0;


2:对文件中的数据进行定位:

          NSString *homePath=NSHomeDirectory();           NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];           NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];           NSUInteger length= [fileHandle availableData].length;           [fileHandle seekToFileOffset:length/2];           NSData *data=[fileHandle readDataToEndOfFile];           NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];           NSLog(@"%@",str);
 
 
[特别讲一下NSData类的一些方法]
 
3:复制文件中的数据
           //复制文件            NSString *homePath=NSHomeDirectory();            NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];            //NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];            NSString *targetPath=[homePath stringByAppendingFormat:@"/Desktop/outfile"];            NSFileManager *fileManager=[NSFileManager defaultManager];            BOOL result=[fileManager createFileAtPath:targetPath contents:nil attributes:nil];           if(result){             NSLog(@"create success!");          }           NSFileHandle *inFileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];           NSFileHandle *outFileHandle=[NSFileHandle fileHandleForWritingAtPath:targetPath];           NSData *inData=[inFileHandle availableData];  //读出文件中所有的数据           //下面开始进行写文件           [outFileHandle writeData:inData];           [inFileHandle closeFile];           [outFileHandle closeFile];