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文件类的常用方法的更多相关文章

  1. 根据随身固态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 此批处理脚本源代码的 ...

  2. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

  3. pycharm2018.1.4激活破解方法与汉化包-2018年6月19日

    记录下来备用,顺便分享给大家,有能力的还是希望能够支持正版!支持正版!支持正版! 方法1:激活服务器,最简单快速(截止2018年6月19日可用) 在激活Jetbrains旗下任意产品的时候选择激活服务 ...

  4. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  5. 22.Express框架——2019年12月19日

    2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...

  6. .NET编程周记第3期-2020年1月19日

    整理了2020年1月19日这周阅读的几篇有趣的和.NET开发相关的文章.在这里和大家分享. 0x00 Introducing Nullable Reference Types in C# 如标题所示, ...

  7. 2016年12月19日 星期一 --出埃及记 Exodus 21:14

    2016年12月19日 星期一 --出埃及记 Exodus 21:14 But if a man schemes and kills another man deliberately, take hi ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. Codeforces Round #315 (Div. 2A) 569A Music (模拟)

    题目:Click here 题意:(据说这个题的题意坑了不少人啊~~~)题目一共给了3个数---- T 表示歌曲的长度(s).S 表示下载了歌曲的S后开始第一次播放(也就是说S秒的歌曲是事先下载好的) ...

  2. Linux gcc/g++下GDB调试及其调试脚本的使用

    GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB ...

  3. ZOJ 2972 Hurdles of 110m 【DP 背包】

    一共有N段过程,每段过程里可以选择 快速跑. 匀速跑 和 慢速跑 对于快速跑会消耗F1 的能量, 慢速跑会集聚F2的能量 选手一开始有M的能量,即能量上限 求通过全程的最短时间 定义DP[i][j] ...

  4. DW8051调试终结

    都不记得自己到底揪心了多久 —— 归根结底还是自己太菜了.终于找到了DW8051移植的bug. 这么大的一个图居然没有看到,真是气煞老夫也. 在原来移植的基础之上加两个反相器就OK 了

  5. Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面

    原文 Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面 原文地址:  http://channel9.msdn.com/Series/Windows-Ph ...

  6. Solr入门之SolrServer实例化方式

    随着solr版本的不断升级, 差异越来越大, 从以前的 solr1.2 到现在的 solr4.3, 无论是类还是功能都有很大的变换, 为了能及时跟上新版本的步伐, 在此将新版本的使用做一个简单的入门说 ...

  7. C 语言学习 之搭建环境和熟悉命令

    Open Terminal 打开终端To run a command as administrator (user "root"), use "sudo <comm ...

  8. 【译】在ASP.NET中创建PDF-iTextSharp起步

    原文 [译]在ASP.NET中创建PDF-iTextSharp起步 .Net framework 中自身并不包含可以和pdf打交道的方法.所以,当你需要你的ASP.Net Web应用程序中包含创建或与 ...

  9. 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)

    该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...

  10. 基于visual Studio2013解决C语言竞赛题之1007找数

         题目 解决代码及点评 /************************************************************************/ ...