【IOS 开发学习总结-OC-36】★文件 I/O——NSFileHandle&NSURL&NSBundle

NSFileHandle处理文件 IO

使用NSFileHandle的基本步骤如下:

  1. 创建一个NSFileHandle,该NSFileHandle将会打开指定的文件;
  2. 对打开的文件执行IO操作;
  3. 关闭文件。

NSFileHandle提供的常用方法如下:
1. + (nullable instancetype)fileHandleForReadingAtPath:(NSString *)path; 根据指定路径打开一份准备读取文件内容的文件,并返回该文件对应的NSFileHandle;
2. + (nullable instancetype)fileHandleForWritingAtPath:(NSString *)path;:根据指定路径打开一份准备写入内容的文件,并返回该文件对应的NSFileHandle;
3. + (nullable instancetype)fileHandleForUpdatingAtPath:(NSString *)path; 根据指定路径打开一份即可读取,又可写入文件内容的文件,并返回该文件对应的NSFileHandle;
4. + (nullable instancetype)fileHandleForReadingFromURL:(NSURL *)url error:(NSError **)error :; 根据指定URL打开一份准备读取文件内容的文件,并返回该文件对应的NSFileHandle;
5. + (nullable instancetype)fileHandleForWritingToURL:(NSURL *)url error:(NSError **)error NS_AVAILABLE(10_6, 4_0); 根据指定URL打开一份准备写入内容的文件,并返回该文件对应的NSFileHandle;
6. + (nullable instancetype)fileHandleForUpdatingURL:(NSURL *)url error:(NSError **)error NS_AVAILABLE(10_6, 4_0); 根据指定URL打开一份即可读取,又可写入文件内容的文件,并返回该文件对应的NSFileHandle;
7. + (NSFileHandle *)fileHandleWithStandardError; 打开标准错误输出设备对应的NSFileHandle;
8. + (NSFileHandle *)fileHandleWithStandardInput;打开标准输入设备(通常是键盘 )对应的NSFileHandle;
9. + (NSFileHandle *)fileHandleWithStandardOutput;:打开标准输出设备(通常是屏幕 )对应的NSFileHandle;打开标准输入设备(通常是键盘 )对应的NSFileHandle;
10. + (NSFileHandle *)fileHandleWithNullDevice; 打开空设备对应的NSFileHandle;
11. availableData 返回该文件中包含的所有数据;
12. fileDescriptor 获取对应的文件描述器
13. - (NSData *)readDataToEndOfFile; 读取文件中包含的所有数据;
14. - (NSData *)readDataOfLength:(NSUInteger)length; 读取该文件中 length 字节的数据。

- (NSData *)readDataOfLength:(NSUInteger)length; 返回的length 字节的数据包装成 NSData 对象,如果已经超了文件末尾处,程序返回一个不含任何数据的 NSData 对象,SO——程序 可以通过该方法返回的 NSData的length方法是否返回0来判断是否已经读到了文件结尾处。

-
15. - (void)writeData:(NSData *)data; 将指定的 data 数据输入到该文件中;
16. offsetInFile 获取该NSFileHandle中文件指针的位置;
提示:

文件指针记录了当前读,写文件的位置——文件指针所在的位置,也就是接下来 NSFileHandle要读/写的位置。

-
17. - (unsigned long long)seekToEndOfFile; 将该NSFileHandle中文件指针移动到文件的结尾处;
18. - (void)seekToFileOffset:(unsigned long long)offset; 将该NSFileHandle中文件指针移动到指定位置处;
19. - (void)closeFile 关闭底层文件;
20. - (void)truncateFileAtOffset:(unsigned long long)offset 将文件长度截断为 offset 字节——若该offset参数小于文件本身大小,多余的部分被截断;若大于文件本身大小,文件末尾将会被填充空数据;

除此之外,NSFileHandle还提供了用于后台(即异步)读写文件的方法,这些方法大多以InBackgroundAndNotify结尾,这些方法,读,写文件内容时不会阻塞前台线程,会在后台完成对文件的读,写。读,写完成后,这些方法会向前台发一个通知。

特别说明:

NSFileHandle没有创建文件的功能,必须使用 fileManager来 创建对象。
- 当文件不存在时,如果使用fileHandleForWritingAtPathfileHandleForUpdatingAtPath方法来打开文件,这2个方法都会返回 nil;
- 如果文件存在,上面的2个方法打开文件后,文件记录指针都

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值