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];

Object-C-NSFileHandle的更多相关文章

  1. Object C学习笔记26-文件管理(二)

    上一篇简单的介绍了如何获取文件属性,删除,拷贝文件等,本文继续记录Object C中文件IO操作. 一. 获取文件的执行主目录 在Object C中提供了一个方法 NSHomeDirectory() ...

  2. CoreCLR源码探索(一) Object是什么

    .Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...

  3. JavaScript Object对象

    目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...

  4. javascript之Object.defineProperty的奥妙

    直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...

  5. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  6. APEX:对object中数据进行简单处理?

    在Salesforce中,常常要对各种数据进行处理,已满足业务逻辑.本篇文章会介绍如何实现从object获取数据,然后将取得的数据进行一系列简单处理. 第一步:SongName__c 是一个新建的ob ...

  7. 笔记:Memory Notification: Library Cache Object loaded into SGA

    笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...

  8. Selenium的PO模式(Page Object Model)[python版]

     Page Object Model 简称POM  普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...

  9. Object是什么

    Object是什么 .Net程序员们每天都在和Object在打交道如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" ...

  10. a different object with the same identifier value was already associated with the session:

    hibernate操作: 实例化两个model类,更新时会提示  a different object with the same identifier value was already assoc ...

随机推荐

  1. Docker logs 命令

    [root@docker01 ~]# docker logs --help Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a con ...

  2. Logstash在Linux上安装部署

    Logstash 简介: Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.它可以实现多样化的数据源数据全量或增量传 ...

  3. mysql5.5版本和mysql 5.6版本具体有哪些区别?

    mysql5.6较5.5其中有一个很大的好处,比如给表加字段的时候,5.5或以前的版本会锁表,5.6就不会锁表,而且速度很快. MySQL 5.6 对默认配置进行了一些微调,这些调整大多数都非常不错, ...

  4. mysqladmin 命令详解

    mysqladmin是一个执行管理操作的客户端程序.它可以用来检查服务器的配置和当前状态.创建和删除数据库等. mysqladmin 工具的使用格式: mysqladmin [option] comm ...

  5. Python之re模块正则表达式

    re模块用于对python的正则表达式的操作 字符: .匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s匹配任意空白符 \b匹配单词的开始或结束 ^匹配字符串的开始 $匹配字符串的结 ...

  6. Centos升级安装.Net core 1.1

    VS2017已经发布了一个多月了,最期待的功能就是.net core的更新,终于去掉了繁琐了project.json的文件配置.我们尝试打开一个VS2015的.net core项目,会自动升级至.ne ...

  7. 【xargs -i】复制文件夹中前100个文件

    复制前一万个文件到 tmp 下 |xargs -i cp {} /tmp 复制后一万个文件到 tmp 下 |xargs -i cp {} /tmp 查看linux下文件夹文件数目 ls -l |gre ...

  8. 学习Linux二(创建、删除文件和文件夹命令)

     转自:http://www.cnblogs.com/zf2011/archive/2011/05/17/2049155.html 今天学习了几个命令,是创建.删除文件和文件夹的,在linux里,文件 ...

  9. 换个字体解决Dreamweaver文字选不中的问题

    在使用Dreamweaver时,有时我们要选中一些字符进行编辑或删除,光标在英文字上面可以选中,在中文字上面就选不中,郁闷吧.比如在编辑下面这段文字的时候,如图所示, 想选中“你难得已经忘了吗?”,当 ...

  10. Celery配置Redis数据库保存Return结果状态

    使用windows版本 1.于GitHUB下载https://github.com/ServiceStack/redis-windows Window版本,到路径: 2. 运行路径下:D:\redis ...