6月19日 NSFileHandle文件类的常用方法
NSFileManager类主要对文件的操作(删除,修改,移动,复制等);
NSFileHandle类主要对文件内容进行读取和写入操作
NSFileHandle处理文件的步骤
1. 创建一个NSFileHandle对象
2. 对打开的文件进行I/O操作
3. 关闭文件
可以使用NSFileHandle做文件的断点续传
(一) 常用方法
//创建方法
+(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)truncateFileAtOffset:(unsigned longlong)offset;//将文件的长度设置为offset字节
-(void)closeFile;//关闭文件
(二)
//追加数据
NSString *homePath = NSHomeDirectory();
NSString *sourcePath = [homePathstringByAppendingPathComponent:@”需要追加数据的文件路径”];
NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:sourcePath];
//将节点跳到文件末尾
[fileHandle seekToEndOfFile];
NSString *str = @”追加的数据”;
NSData *stringData = [strdataUsingEncoding:NSUTF8StringEncoding];
//追加写入数据
[fileHandle writeData:stringData];
[fielHandle closeFile];
//定位数据
NSFileManager *fm = [NSFileManagerdefaultManager];
NSString *content = @”abcdefghijklmn”;
[fm createFileAtPath:path contents:[contentdataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSFileHandle *fileHandle = [NSFileHandlefileHandleForReadingAtPath:path];
//获取数据长度
NSUInteger length = [[fileHandleavailableData] length];
//偏移量但文件的一半
[fileHandle seekToFileOffset:length/2];
//从一半开始将数据凑到文件最后
NSData *data = [fileHandlereadDataToEndOfFile];
[fileHandle closeFiel];
//复制文件
NSFileHandle *infile, *outfile;//输入文件,输出文件
NSData *buffer;//读取的缓冲数据
NSFileManager *fileManager = [NSFileManagerdefaultManager];
NSString *homePath = NSHomeDirectory();
//源文件路径
NSString *sourcePath = [homePathstringByAppendingPathComponent:@”testfile.text”];
//输出文件路径
NSString *outPath = [homePathstringByAppendingPathComponent:@”outfile.text”];
//创建输出文件
BOOL success = [fileManagercreateFileAtPath:outPath content:nil attributes:nil];
If (!success){
returnNO;
}
outfile = [NSFileHandlefileHandleForWritingAtPath:outPath];
infile = [NSFileHandlefileHandleForReadingAtPath:sourcePath];
//读取源文件内容
NSData *data = [infile readDataToEndOfFile];
//写入内容
[outfile writeData:data];
[oufile closeFile];
[infile closeFile];
6月19日 NSFileHandle文件类的常用方法的更多相关文章
- 根据随身固态U盘卷标搜索U盘盘符并打开文件的批处理脚本.bat 徐晓亮 595076941@qq.com 2019年12月19日6点50分
@Echo offRem 根据随身固态U盘卷标搜索U盘盘符并打开文件的批处理脚本.batRem 徐晓亮 595076941@qq.com 2019年12月19日6点50分 Rem 此批处理脚本源代码的 ...
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- pycharm2018.1.4激活破解方法与汉化包-2018年6月19日
记录下来备用,顺便分享给大家,有能力的还是希望能够支持正版!支持正版!支持正版! 方法1:激活服务器,最简单快速(截止2018年6月19日可用) 在激活Jetbrains旗下任意产品的时候选择激活服务 ...
- Python 学习日志9月19日
9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...
- 22.Express框架——2019年12月19日
2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...
- .NET编程周记第3期-2020年1月19日
整理了2020年1月19日这周阅读的几篇有趣的和.NET开发相关的文章.在这里和大家分享. 0x00 Introducing Nullable Reference Types in C# 如标题所示, ...
- 2016年12月19日 星期一 --出埃及记 Exodus 21:14
2016年12月19日 星期一 --出埃及记 Exodus 21:14 But if a man schemes and kills another man deliberately, take hi ...
- 2016年11月19日 星期六 --出埃及记 Exodus 20:10
2016年11月19日 星期六 --出埃及记 Exodus 20:10 but the seventh day is a Sabbath to the LORD your God. On it you ...
- 2016年10月19日 星期三 --出埃及记 Exodus 19:3
2016年10月19日 星期三 --出埃及记 Exodus 19:3 Then Moses went up to God, and the LORD called to him from the mo ...
随机推荐
- Java字节码中的方法调用
invokestatic,用于static修饰的方法.任何时候调用的时候只需要类名+方法名即可,无需new.JVM直接将其映射到方法区,执行速度极快.当该方法需要参数的时候,invokestatic会 ...
- lucene 索引查看工具
luke 是 lucene 索引查看工具,基于 swing 开发的,是 lucene.solr.nutch 开发过程中不可或缺的工具.在测试搜索过程,进程出现搜不到东西或者搜到的东西不是想要的结果时, ...
- 无线网络wifi (WPA/WPA2)密码破解方法
无线网络password破解WPA/WPA2教程 本教程用于探索无线路由安全漏洞,禁止用于非法用途,违者法律必究(与我无关) 在动手破解WPA/WPA2前,应该先了解一下基础知识,本文适合新手阅读 首 ...
- arm:启动代码判断是从nand启动还是从norflash启动,拷贝程序到内存的过程
一.nand启动和nor启动:[1] CPU从0x00000000位置开始运行程序. 1.nand启动: 如果将S3C2440配置成从NANDFLASH启动(将开发板的启动开关拔到nand端,此时OM ...
- arm汇编:ldr,str,ldm,stm,伪指令ldr
ldr,str,ldm,stm的命名规律: 这几个指令命名看起来不易记住,现在找找规律. 指令 样本 效果 归纳名称解释 ldr Rd,addressing ldr r1,[r0] addressin ...
- Ibatis的分页机制的缺陷
我们知道,Ibatis为我们提供了可以直接实现分页的方法 queryForList(String statementName, Object parameterObject, int skipResu ...
- django-form表单的提交
<form action="/blog/" method="get"> 如果runserver默认启用127.0.0.1:8000的话,且上面这个f ...
- Qt实现QQ好友下拉列表(用QListView实现,所以还得定义它的Model)
偶然发现Qt有个控件可以实现下拉列表,所以就试着实现一下类似QQ面板的下拉列表,这里主要实现几个功能: 1.可以删除列表中图标 2.可以像qq一样的,把某个分组下的图标转移到另外的分组 3.添加分组 ...
- asp.net用Zxing库实现条形码输出
原文 asp.net用Zxing库实现条形码输出 这个简单的问题,困扰了我将近两个小时,主要是再官方文档上没有找到demo,那只能用搜索引擎了,看看其他程序员写的程序,但是发现处处是坑,看了四五个例子 ...
- Jquery学习笔记:利用find和children方法获取后代元素
在很多场景下,需要根据一个已知的jquery对象,去查找其满足条件的后代节点. 这时可以利用 find函数和children来处理. find和children函数都可有一个参数,常见的是一个字符串, ...