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文件操作(2)的更多相关文章

  1. OC文件操作1

    主要内容: 1)文件操作:对文件本身的操作(NSManager) 2)对文件内容的操作(NSHandle) 1.NSManager 创建一个单例的file manager的对象 //创建一个单例的fi ...

  2. OC文件操作(1)

    1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError ...

  3. OC文件操作2

    1.对文件本身的操作 NSManager 2.对文件内容的操作 NSHandle 文件句柄 NSFileHandle * fh = [NSFileHandle fileHandleForReading ...

  4. OC文件操作、获取文件属性

    #import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autorel ...

  5. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  6. PHP文件操作系统----主要的文件操作函数

    一.文件操作系统概述 1.概述: php中的文件操作系统主要是对文件和目录的操作.文件在windows系统下分为3种不同:文件.目录.未知,在linux/unix系统下分为7种不同:block.cha ...

  7. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  8. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  9. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

随机推荐

  1. POJ 1503 Integer Inquiry 简单大数相加

    Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his explo ...

  2. Myriad2 简介

    本文翻译自英文: Myriad2图像处理器是一个永远在线的移动视觉处理器系统.它提供了非常强处理能力和及其高效了内存带宽以满足计算机视觉和计算成像应用的需求. Myriad2同时也满足移动设备的非常低 ...

  3. 【原】centos6.5下hadoop cdh4.6 安装

    1.架构准备:      namenode 10.0.0.2      secondnamenode 10.0.0.3      datanode1 10.0.0.4      datanode2 1 ...

  4. ios策略模式应用

    策略模式应用大量应用于解决巨型switch-case  if-else..... 具体使用方法 : 策略基类(BaseStrategy)包含一个虚算法,所有子类实现虚算法 容器类含有一个指向策略基类的 ...

  5. myisam MySQL 锁问题

    2016-07-23  (点击上方公众号,可快速关注) 来源:阿里云 RDS - 数据库内核组 链接:http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近 ...

  6. weblogic下 微信公众平台获取token报错

    问题描述: 开发微信公众平台,本地tomcat可以正常获取token并发送模板消息,部署在weblogic后报错,异常信息如下: java.security.InvalidKeyException: ...

  7. CFS: 虚拟运行时间

    http://edsionte.com/techblog/archives/4331 nice和prio的关系如下: #define NICE_TO_PRIO(nice) (MAX_RT_PRIO+n ...

  8. Java源码中的发现:快速判断一个int值是几位数

    判断一个int值是几位数,要是我自己实现,估计又会想到除法和模运算了,偶然在java标准API源码中发现的写法,很强大. public class Test { final static int[] ...

  9. C#--Session用完如何清除

    Session.Abandon();//清除全部Session//清除某个SessionSession["UserName"] = null;Session.Remove(&quo ...

  10. "_Default"同时存在于两个dll文件中的解决办法

    编译器错误消息:CS0433: 类型“_Default”同时存在于“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Fi ...