NSFileHandle类
Objective-C使用NSFileHandle类对文件进行基本操作,IOS文件操作
NSFileHandle类中得方法可以对文件进行基本的读写,偏移量的操作。
NSFileHandle基本步骤:
1、打开文件,获取一个NSFileHandle对象。
2、对打开NSFileHandle的文件对象行I/O操作
3、关闭文件对象
NSFileHandle常用方法:
+(NSFileHandle*)fileHandleForReadingAtPath:path 打开一个文件用于读入
+(NSFileHandle*)fileHandleForWritingAtPath:path 打开一个文件用于写入
+(NSFileHandle*)fileHandleForUpdatingAtPath:path 打开一个文件用于读写
-(NSData*)availableData 从设备或者通道返回可用数据
-(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 关闭文件
方法fileHandleForWritingAtPath和fileHandleForUpdatingAtPath所指定的文件必须是已经存在的,否则返回nil,另外对于这两个方法中文件的偏移量都是为文件的开始。
方法readDataToEndOfFile每次从文件中读取最多UNIT_MAX字节的数据,这个量定义在
<limits.h>中。
在UNIX系统下编程打开文件进行写入并不会截断文件,需要自己完成截断
1、实例程序,通过程序对文件进行一些基本操作:
- //
- // main.m
- // NSFileHandle
- //
- // Created by swinglife on 13-11-14.
- // Copyright (c) 2013年 swinglife. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- int main(int argc, const charchar * argv[])
- {
- @autoreleasepool {
- NSFileHandle *inFile,*outFile;
- NSData *buffer;
- NSString *fileContent = @"这些是文件内容,这些是文件内容,这些是文件内容,这些是文件内容,这些是文件内容";
- NSFileManager *fm = [NSFileManager defaultManager];
- //创建一个文件
- [fm createFileAtPath:@"testFile.txt" contents:[fileContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
- //创建一个需要写入的文件
- [fm createFileAtPath:@"outFile.txt" contents:nil attributes:nil];
- //读取文件
- inFile = [NSFileHandle fileHandleForReadingAtPath:@"testFile.txt"];
- //写入文件
- outFile = [NSFileHandle fileHandleForWritingAtPath:@"outFile.txt"];
- if(inFile!=nil){
- //读取文件内容
- buffer = [inFile readDataToEndOfFile];
- //将文件的字节设置为0,因为他可能包含数据
- [outFile truncateFileAtOffset:0];
- //将读取的内容内容写到outFile.txt中
- [outFile writeData:buffer];
- //关闭输出
- [outFile closeFile];
- //验证outFile内容
- NSLog(@"%@",[NSString stringWithContentsOfFile:@"outFile.txt" encoding:NSUTF8StringEncoding error:NULL]);
- //创建一个新的文件用来循环写入
- [fm createFileAtPath:@"outFile2.txt" contents:nil attributes:nil];
- //打开一个新的输出
- outFile = [NSFileHandle fileHandleForWritingAtPath:@"outFile2.txt"];
- //设置一个循环写入10条数据,每条数据都再后面添加上而不是覆盖
- for (int i = 0; i<10; i++) {
- //将偏移量设置为文件的末尾
- [outFile seekToEndOfFile];
- //写入数据
- [outFile writeData:buffer];
- }
- //验证内容
- NSLog(@"outFile2:%@",[NSString stringWithContentsOfFile:@"outFile2.txt" encoding:NSUTF8StringEncoding error:NULL]);
- //关闭所有
- [outFile closeFile];
- [inFile closeFile];
- }
- }
- return 0;
- }
NSFileHandle类的更多相关文章
- Objective-c:NSFileHandle类,创建流对象,对文件进行写入、读取的操作
NSFileHandle类:它需要配合NSFileManager文件管理类,对文件内容进行操作,写入数据.读取数据. 使用步骤: 1.打开文件获取NSFileHandle类的对象 2. ...
- NSFileHandle类和NSFileManager,追加数据的操作
NSFileHandle类主要对文件内容进行读取和写入操作 NSFileManager类主要对文件的操作(删除.修改.移动.复制等等) 常用处理方法 + (id)fileHandleForReadin ...
- 6月19日 NSFileHandle文件类的常用方法
NSFileManager类主要对文件的操作(删除,修改,移动,复制等): NSFileHandle类主要对文件内容进行读取和写入操作 NSFileHandle处理文件的步骤 ...
- OC中文件读取类(NSFileHandle)介绍和常用使用方法
NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建 NSFileManager *fi ...
- 【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)
1.文件管理器(NSFileManager) 1> 主要作用及功能方法 主要作用:此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 功能方法: 2> 创建文件夹 创建所 ...
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...
- UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)
一.文件管理器与文件连接器之间的区别 文件管理器(NSFileManager) 此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 文件连接器(NSFileHandle) 此类主要是 ...
- iOS:NSFileHandle和NSFileManger的使用
一.介绍 利用NSFilehandle类提供的方法,允许更有效地使用文件. 一般而言,处理文件时都要经历以下三个步骤: 1.打开文件,并获取一个NSFileHandle对象,以便在后面的I/O操作中引 ...
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
How do you get the paths to these special sandbox directories? NSArray *NSSearchPathForDirectoriesIn ...
随机推荐
- shell 与 空格
shell脚本中,不能随意添加空格,否则出错: 1,=等号两边必须无空格.否则出错.如i =$1和i= $1都是错的.但是在()内部不限制如for ((i= 1;i < 3;i= i+1))是正 ...
- 解决UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal not in range(128)
Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't deco ...
- 《StackGAN: Text to Photo-realistic Image Synthesis with Stacked GAN》论文笔记
出处:arxiv 2016 尚未出版 Motivation 根据文字描述来合成相片级真实感的图片是一项极具挑战性的任务.现有的生成手段,往往只能合成大体的目标,而丢失了生动的细节信息.StackGAN ...
- ubuntu中desktop与alternate版本的区别(转载)
转自:http://www.hyleong.com/ubuntu-desktop-alternate/ 今天ubuntu发布了11.04版本,但是下载的时候有desktop和alternate版本,他 ...
- Linux 常用命令十五 用户和组操作命令
一.创建一个用户 wang@wang:~/workpalce/threading$ sudo useradd -m python # -m创建家目录 wang@wang:~/workpalce/thr ...
- Spring Boot之配置文件值注入(@ConfigurationProperties)
前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...
- MySQL调优之数据类型选择原则
本文涉及:高可用数据库设计时数据类型的选择原则 在进行数据库设计时,如果能够选择最恰当的数据类型就可以为后期的数据库调优打好最坚实的基础 选择数据类型的原则 更小的通常更好 例如存储订单状态字段很多时 ...
- springMVC @Valid不起作用
springmvc使用JSR-303进行表单验证不生效的问题 spring只是支持jsr-303验证,但却不提供jsr-303的实现,文档中提及了需要导入类如hibernate-validator等j ...
- win10 SQL Server 配置管理器无法启动
解决方法: 用管理员方式打开命令行 进入 “C:\Program Files (x86)\Microsoft SQL Server\140\Shared”,(有的是“C:/Program Files/ ...
- leetcode 484. Find Permutation 思维题
https://leetcode.com/contest/leetcode-weekly-contest-16a/problems/find-permutation/ 设原本的数字是0,那么按照它的D ...