NSFileHandle类

作者:追风剑情 发布于:2019-3-6 10:17 分类:Objective-C

利用NSFileHandle类提供的方法,可以更有效地处理文件。

NSFileHandle类并没有提供创建文件的功能。

常用的NSFileHandle类方法
方法 描述
+(id) fileHandleForReadingAtPath: path 打开一个文件准备读取
+(id) fileHandleForWritingAtPath: path 打开一个文件准备写入
+(id) fileHandleForUpdatingAtPath: path 打开一个文件准备更新(读取或写入)
-(NSData *) availableData 从设备或者通道返回可用的数据
-(NSData *) readDataToEndOfFile 读取其余的数据直到文件的末尾(最多UINT_MAX字节)
-(NSData *) readDataOfLength: (NSUInteger) bytes 从文件中读取指定字节的内容
-(void) writeData: data 将data写入文件
-(unsigned long long) offsetInFile 获取当前文件的偏移量
-(void) seekToFileOffset: offset 设置当前文件的偏移量
-(unsigned long long) seekToEndOfFile 将当前文件的偏移量定位到文件的尾
-(void) truncateFileAtOffset: offset 将文件的长度设置为offset字节(如果需要,可以填充内容)
-(void) closeFile 关闭文件

示例

  1. #import <Foundation/Foundation.h>
  2.  
  3. int main(int argc, const char * argv[]) {
  4. @autoreleasepool {
  5. NSFileHandle *inFile, *outFile;
  6. NSData *buffer;
  7. // 打开文件testfile并读取
  8. inFile = [NSFileHandle fileHandleForReadingAtPath: @"testfile"];
  9. if (inFile == nil) {
  10. NSLog(@"Open of testfile for reading failed");
  11. return 1;
  12. }
  13. // 定位到文件的第10个字节
  14. //[inFile seekToFileOffset: 10];
  15. // 跳过文件中当前位置之后的128字节
  16. //[inFile seekToFileOffset: [inFile offsetInFile] + 128];
  17. // 要在文件中向回移动5个整数所占的字节数
  18. //[inFile seekToFileOffset: [inFile offsetInFile] - 5 * sizeof(int)];
  19. // 如果需要,首先创建输出文件
  20. [[NSFileManager defaultManager] createFileAtPath:
  21. @"testout" contents: nil attributes: nil];
  22. // 打开outfile文件进行写入
  23. outFile = [NSFileHandle fileHandleForWritingAtPath: @"testout"];
  24. if (outFile == nil) {
  25. NSLog(@"Open of testout for writing failed");
  26. return 2;
  27. }
  28. // 因为它可能包含数据,截断输出文件
  29. [outFile truncateFileAtOffset: 0];
  30. // 从inFile中读取数据,将它写到outFile
  31. buffer = [inFile readDataToEndOfFile];
  32. NSLog(@"buffer length=%lu", [buffer length]);
  33. [outFile writeData: buffer];
  34. // 关闭这两个文件
  35. [inFile closeFile];
  36. [outFile closeFile];
  37. // 验证文件的内容
  38. NSLog(@"%@", [NSString stringWithContentsOfFile: @"testout"
  39. encoding: NSUTF8StringEncoding error: NULL]);
  40. }
  41. return 0;
  42. }

运行测试
111.png

标签: Objective-C

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号