NSFileHandle 类中得到方法可以很方便的对文件数据进行读写、追加,以及偏移量的操作。

NSFileHandle 基本步骤:

1、打开文件,获取一个NSFileHandle 对象

2、对打开NSFileHandle的文件对象进行I/O操作

3、关闭文件对象

+(NSFileHandle *)fileHandleForReadingAtPath:path 打开一个文件用于读入

+(NSFileHandle *)fileHandleForWritingAtPath:path打开一个文件用于写入

+(NSFileHandle *)fileHandleForUpdatingAtPath:path 打开一个文件用于读写

-(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关闭文件

NSFileManager *fm=[NSFileManager defaultManager];
    NSString *outFilePath = @"outfile.txt";
    NSString *contentStr =@"这是使用NSFileManager创建的一个文件";
    if([fm createFileAtPath:outFilePath contents:[contentStr dataUsingEncoding:NSUTF8StringEncoding] attributes:nil])
    {
        NSLog(@"create success");
    }else{
        NSLog(@"create Fail");
    }
    NSString *infilePath=@"inFile.txt";
    if([fm createFileAtPath:infilePath contents:nil attributes:nil]){
        NSLog(@"create success!");
    }
   
    NSFileHandle *outHandle =[NSFileHandle fileHandleForReadingAtPath:outFilePath];
    NSFileHandle *inHandle=[NSFileHandle fileHandleForReadingAtPath:infilePath];
    if(outHandle==nil||inHandle==nil)
    {
        NSLog(@"请确认文件是否存在!");
    }else{
        NSData *data=[outHandle readDataToEndOfFile];
        //clear
        [inHandle truncateFileAtOffset:0];
        [inHandle writeData:data];
        [outHandle closeFile];
        [inHandle closeFile];
    }
    //文件追加内容
    NSString *infilePath=@"inFile.txt";
    NSFileHandle *updateHandle =[NSFileHandle fileHandleForUpdatingAtPath:infilePath];
    NSString *str=@"追加内容";
    //偏移量 刚开始的时候在开头
    [updateHandle seekToEndOfFile];
    [updateHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
    [updateHandle closeFile];

最新文章

  1. IOS开发基础知识--碎片39
  2. devexpress bandgridview使用总结(14.2)
  3. python解释器快捷键
  4. Arduino101学习笔记(三)—— 101简介
  5. MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能
  6. c#获取今天星期几
  7. Linux挂载60T存储
  8. 面试题:实现LRUCache::Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法
  9. Ubuntu下安装android studio的时候,无法进入图形界面--/usr/lib/jdk1.8.0_60/jre/lib/i386/libawt_xawt.so: libXtst.so.6: 无法打开共享对象文件: 没有那个文件或目录
  10. 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象
  11. c++ 17介绍
  12. TCP/UDP简介
  13. HTTPS 传输优化详解之动态 TLS Record Size
  14. StreamCQL编写jstorm拓扑任务入门
  15. oo第一次作业
  16. vc++获取网页源码
  17. 学JS的心路历程-Promise(二)
  18. jquery 判断checkbox是否被选中问题
  19. 多线程之ThreadLocal(转)
  20. android拾遗——Android 动画学习笔记

热门文章

  1. windows桌面通知区域不显示音量图标的解决方法
  2. vim配置函数跳转(c/c++)
  3. spring配置多视图解析器
  4. poj2406 Power Strings 【KMP】
  5. Pangolin中opengl的混合(gl_blend)
  6. POJ_1050_To the Max
  7. 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库
  8. oel5.5安装mysql数据库初始化报错解决办法
  9. 批量转换gbk编码的java代码为utf8
  10. Vue打开新页面的方法