Object-C-NSFileHandle
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的更多相关文章
- Object C学习笔记26-文件管理(二)
上一篇简单的介绍了如何获取文件属性,删除,拷贝文件等,本文继续记录Object C中文件IO操作. 一. 获取文件的执行主目录 在Object C中提供了一个方法 NSHomeDirectory() ...
- CoreCLR源码探索(一) Object是什么
.Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...
- JavaScript Object对象
目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...
- javascript之Object.defineProperty的奥妙
直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...
- c# 基础 object ,new操作符,类型转换
参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...
- APEX:对object中数据进行简单处理?
在Salesforce中,常常要对各种数据进行处理,已满足业务逻辑.本篇文章会介绍如何实现从object获取数据,然后将取得的数据进行一系列简单处理. 第一步:SongName__c 是一个新建的ob ...
- 笔记:Memory Notification: Library Cache Object loaded into SGA
笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...
- Selenium的PO模式(Page Object Model)[python版]
Page Object Model 简称POM 普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...
- Object是什么
Object是什么 .Net程序员们每天都在和Object在打交道如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" ...
- 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 ...
随机推荐
- matlab中 数据保留有效位数
可以使用round函数 ,这函数原本功能是四舍五入 比如: >> A = 0.0326465;>> B = round(A*1000)/1000 B = 0.0330
- jmeter聚合报告导出时乱码的解决
在使用jmeter性能测试时,聚合报告导出后使用excel打开时是乱码,查看相关文件后是编码的问题,解决方法如下: 1.现象: 用excel打开变成这种乱码无法看清 2.解决: 先使用记事本打开后,选 ...
- spark 将dataframe数据写入Hive分区表
从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API.Da ...
- ftok函数
ftok函数 系统建立IPC通讯(消息队列.信号量和共享内存)时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型 头文件: #include <sys/types.h ...
- Shell for
for循环一般格式为:for 变量 in 列表do command1 command2 ... commandNdone列表是一组值(数字.字符串等)组成的序列,每个值通过空格分隔.每循环一次,就将列 ...
- 2018上C语言程序设计(高级)作业- 第4次作业
作业要求一 1.设计思路: 第一步:首先通过cmd进行判断 第二步:根据题目写的分别进入不同的判断函数,进行逐一判断: 2.实验代码: #include <stdio.h> #includ ...
- react实现全选、取消全选和个别选择
react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo e ...
- Linux下实现秒级定时任务的两种方案
Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...
- MapReduce排序
在map和reduce阶段进行排序时,比较的是k2.v2是不参与排序比较的.如果要想让v2也进行排序,需要把k2和v2组装成新的类,作为k2,才能参与比较. 例子: 二次排序:在第一列有序得到前提下第 ...
- codeforces 869A/B/C
A. The Artful Expedient time limit per test 1 second memory limit per test 256 megabytes input stand ...