NSFileManager 文件管理器完成文件的创建、移动、拷贝等管理操作
1.查询文件和目录
OC中查询路径下的目录主要分为浅度遍历和深度遍历。
浅度遍历
NSFileManager * manager = [NSFileManager defaultManager];//创建文件管理器,+方法
NSError * error = nil; //存数错误信息
NSArray * array = [manager contentsOfDirectoryAtPath:@"/tmp" error:&error];
//查询目录“/tmp”下的文件和目录,此函数返回值类型为NSArray *
这种查询方法,只看一级目录,只看所查目录,不看子目录
深度遍历
NSArray * array = [manager subpathsOfDirectoryAtPath: @"/tmp" error: &error];
这种方法查看所查目录和其所有子目录下的文件
2.创建目录
[manager createDirectoryAtPath:@"./1/2" withIntermediateDirectories:YES attributes:nil error:&error];
//第一个参数指目录创建的位置,这里”./”,为当前目录,指程序所在目录
//第二个参数,是否创建中间目录,意思为我们目的创建2目录,若1无的话,先创建1,再创建2
//第三个,指目录的属性,其权限等东西,我们可以设为nil暂时不考虑
3.创建文件
[manager createFileAtPath:@"./hello/world/1.txt" contents:nil attributes:nil];//创建一个名为1.txt的文件
//第二个参数,指以什么内容创建,nil为空文件
//第三个参数,文件的亚属性,我们这里不考虑,nil设置
//此函数返回值为BOOL型,YES创建成功,NO失败
4.拷贝目录或文件
[manager copyItemAtPath:@"./hello/world" toPath:@"./world" error:&error];
//拷贝目录或文件,拷贝目录时,会把目录下的文件和子目录都拷走
//第二个参数,必须写上拷过来之后的重命名
//第一个参数,必须是一个存在的目录或文件,第二个参数必须是一个不存在的目录或文件
//这程序表示,hello下的world拷贝到当前目录,改名为world
5.移动/剪切目录和文件
[manager moveItemAtPath:@"/tmp/dir1" toPath:@"./dir1" error:&error];//需注意的地方,与拷贝类似
6.删除目录和文件
[manager removeItemAtPath:@"./dir1" error:&error];//与移动类似,只是没有了目标位置
7.判断文件是否存在
[manager fileExistsAtPath:@"./1.txt"];//返回值为BOOL,YES为存在
NSFileHandle 文件句柄 文件的读写修改操作
对文件内容进行操作,我们需要一个新的类NSData来帮助我们。NSData可以创建一个用来存储数据的对象,进而我们对文件内容进行操作。
1.创建含有内容的文件
NSString * str = @”Hello World”;
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSFileManager * manager = [NSFileManager defaultManager];
[manager creatFileAtPath:@”./helloworld” contents:data attributes:nil];
//如果第二个参数不是nil,就会在创建文件的同时,将data内容写入文件
2.添加内容到已有的文件中
NSFileHandle * handle = [NSFileHandle fileHandleForWritingAtPath:@”./helloworld”]; //只写方式打开
[handle writeData:data]; //写入data数据
想要写入的数据,转为data,再写到文件中去。
handle = [NSFileHandle fileHandleForReading AtPath:@”./helloworld”];//只读方式打开
handle = [NSFileHandle fileHandleForUpdating AtPath:@”./helloworld”];//以读写的方式打开
这面的三种方式,均能写入文件内容,但是我们会发现,再次执行后,都会覆盖上次写入的内容。
3.追加内容到文件
与C语言文件管理不同的是,OC中没有追加的打开方式。OC中解决问题的方式,其实也很简单,就是将文件指针移到文件尾,然后再执行写入data操作,这样就能完成追加。
[handle seekToEndOfFile];//指针定位在文件尾,打开后执行这一步,再写入数据,可完成追加。
4.读取文件内容
读取文件内容有很多种方式,每种方式根据不同需要,可起到很好的效果。
(1)不打开文件,直接读取文件内容
NSData * data = [NSData dataWithContentsOfFile:@”./1.txt”];
NSData对象data将保存一个普通的C字符串,我们使用data输出时,使用%s,输出就能看到我们读出的内容。使用%@输出的话,我们得到的是一串ASCII码值。
NSLog(@”%@”,(char * )[data bytes]);//强转一下再打印。
(2)打开文件,再读取
NSFileHandle * handle = [NSFileHandle FileHandleForReadindAtPath:@”./1.txt”];
NSData * data = [handle readDataOfToEndOfFile];//读到文件尾,data接收内容
NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//将data内容转入字符串
我们也可以实现文件的分段读取,避免文件过大,内存不够的情况
[handle readDataOfLength:6];//读取六个字符的内容
配合循环可以读取文件的全部内容。
[handle seekToFileOfSet:0];//指针定位在文件头
(2)直接读取文件内容到字符串
NSString * str = [NSString stringWithContentOfFile:@”./1.txt” encoding:NSUTF8StringEncoding error:&error];//以文件内容生成一字符串,读取全部内容
[str writeToFile:@”./2.txt” atomically:no encoding:NSUTF8String Encoding error:&error];//将字符串内容写入到文件中
本文出自 “CoderToDeveloper” 博客,请务必保留此出处http://rongchengfei.blog.51cto.com/6269699/1090236
- OC文件操作1
主要内容: 1)文件操作:对文件本身的操作(NSManager) 2)对文件内容的操作(NSHandle) 1.NSManager 创建一个单例的file manager的对象 //创建一个单例的fi ...
- OC文件操作(1)
1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError ...
- OC文件操作2
1.对文件本身的操作 NSManager 2.对文件内容的操作 NSHandle 文件句柄 NSFileHandle * fh = [NSFileHandle fileHandleForReading ...
- OC文件操作、获取文件属性
#import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autorel ...
- 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...
- PHP文件操作系统----主要的文件操作函数
一.文件操作系统概述 1.概述: php中的文件操作系统主要是对文件和目录的操作.文件在windows系统下分为3种不同:文件.目录.未知,在linux/unix系统下分为7种不同:block.cha ...
- 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...
- 野路子出身PowerShell 文件操作实用功能
本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...
- Node基础篇(文件操作)
文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...
随机推荐
- LINUX系统中动态链接库的创建与使用
大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部 ...
- 动态规划(树形DP):HDU 5886 Tower Defence
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2MAAAERCAIAAAB5Jui9AAAgAElEQVR4nOy9a6wsS3YmFL/cEkh4LP
- Java-Iterator的用法
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...
- 解决Mac OS X Lion狮子系统及win7多分区教程
[绿茶教程]解决Mac OS X Lion狮子系统及win7多分区教程 工具/原料 8G的u盘制作lion系统安装盘 步骤/方法 插入U盘---开机---按住左下角“Option”键(alt ...
- 去除 Visual Studio 中臃肿的 ipch 和 sdf 文件
使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...
- Action
学习Action的几个内容 1.实现一个Action的最常用方式: 从ActionSupport继承 链接 2.Action配置 DMI动态方法调用 ! 通配符配置 * {1} {2} … * ...
- 【异构计算】OpenCL中上下文
引言 opencl中,上下文(context)是一个抽象容器并存在于主机端,它能协调主机与设备之间的交互机制,管理设备上可以的内存对象,跟踪针对每个设备新建kernel和程序. API函数clCrea ...
- winform 跨窗体给控件传值 分类: WinForm 2014-08-02 16:33 195人阅读 评论(0) 收藏
两个窗体 FormA,FormB; FormA窗体中有一文本框控件:TextBox; FormB窗体中有一变量:txtJSJ 目的:把变量赋值给文本框 实现: 设置TextBox属性: Modifie ...
- memcache基本讲解
Memcached技术 介绍: memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 在memachec 中维护 ...
- (转)百度Map API
转自 http://blog.sina.com.cn/s/blog_6079f38301013sb3.html 一.与地图操作相关的接口哦! (这些接口的开启都是写在执行成功的回调函数那里) map ...