使用NSFileManager

文件系统接口

允许访问文件夹内容

创建 重命名 删除文件 修改文件和文件属性,以及Finder对所有文件系统任务执行的一般操作。

访问NSFileManager,使用共享的管理器对象

NSFileManager *fileManager = [NSFileManager defaultManager];

允许对NSFileManager设置代理

用于当文件管理器完成如 复制或移动文件操作时 接收相应的信息。

需要创建自己的NSFileManager示例,而不是使用共享实例。

NSFileManager *newFileManager = [[NSFileManager alloc] init];
newFileManager.delegate = self;

获取一个文件夹的内容

使用方法

contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:

简单返回文件夹内容的NSURL

NSURL *folderURL = [NSURL fileURLWithPath:@"/Applications"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError __autoreleasing *error = nil;
NSArray *folderContents = [fileManager contentsOfDirectoryAtURL:folderURL includingPropertiesForKeys:nil options: error:&error];
NSLog(@"返回文件夹内容的URL:%@",folderContents);

folderContents包含指向该文件夹中每一项的NSURL。


访问单独的NSURL对象,获取指向的文件信息

使用方法: resourceValuesForKeys:error:

返回NSDictionary,包含每一项指向的文件的属性 可以使用此方法获取缓存大小

 //创建一个数组 包含想要了解的属性
//这里包含文件大小 修改日期
NSArray *attributes = [NSArray arrayWithObjects:NSURLFileSizeKey,NSURLContentModificationDateKey,nil];
//获得返回的结果
//[NSURL URLWithString:@""] 是一个NSURL对象 想要了解的文件夹
NSDictionary *attributesDictionary = [[NSURL URLWithString:@""] resourceValuesForKeys:attributes error:nil];
//获取文件的大小
NSNumber *fileSizeInBytes = [attributesDictionary objectForKey:NSURLFileSizeKey];
//获取最近修改的日期
NSDate *lastModifileDate = [attributesDictionary objectForKey:NSURLContentModificationDateKey];

还可以在NSFileManager列出文件夹内容时,预抓取属性

NSArray *attributes = @[NSURLFileSizeKey,NSURLContentModificationDateKey];
NSURL *folderURL = [NSURL fileURLWithPath:path];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError __autoreleasing *error = nil;
NSArray *folderContents = [fileManager contentsOfDirectoryAtURL:folderURL includingPropertiesForKeys:attributes options: error:&error];
NSLog(@"返回文件夹内容的URL:%@",folderContents);

创建目录

使用方法:[fileManager createDirectoryAtURL:anURL withIntermediatetDirectories:YES attributes:nil error:nil]

withIntermediatetDirectories:YES 表示创建额外 需要的文件夹 创建父目录不存在的子目录,自动将父目录创建

创建文件:

使用方法

[fileManager createFileAtPath:aPath contents:someData attributes:nil];

删除文件

使用方法

[fileManager removeItemAtURL:anURL error:nil];

这样删除不回移至垃圾箱

移动文件

使用方法

[file moveAtURL:sourceURL toURL:destinationURL error:nil]; -> BOOL

复制文件

使用方法

[file copyItemAtURL:sourceURL toURL:destinationURL error:nil]; -> BOOL

浅度遍历目录

使用方法

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error

深度遍历目录

使用方法

- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error

获取当前的目录

- (NSString *)currentDirectoryPath

更改当前目录

- (BOOL)changeCurrentDirectoryPath:(NSString *)path

枚举目录内容

- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path

判断文件是否存在

- (BOOL)fileExistsAtPath:(NSString *)path

获取文件信息(属性和权限)

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error

从文件中读取数据

- (NSData *)contentsAtPath:(NSString *)path

比较两个文件的内容

- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2

测试文件是否存在 能否执行读操作

- (BOOL)isReadableFileAtPath:(NSString *)path

测试文件是否存在 能否执行写操作

- (BOOL)isWritableFileAtPath:(NSString *)path

二、文件操作类NSFileHandle常用操作:

只读方式打开文件

+ (id)fileHandleForReadingAtPath:(NSString *)path

只写方式打开文件

+ (id)fileHandleForWritingAtPath:(NSString *)path

读写方式打开文件

+ (id)fileHandleForUpdatingAtPath:(NSString *)path

从文件当前位置读到结尾

- (NSData *)readDataToEndOfFile

从文件当前位置读到固定字节数的内容

- (NSData *)readDataOfLength:(NSUInteger)length

返回所有可用的数据

- (NSData *)availableData

写文件

- (void)writeData:(NSData *)data

固定到文件尾部

- (unsigned long long)seekToEndOfFile

定位到文件指定位置

- (void)seekToFileOffset:(unsigned long long)offset

获取当前文件的偏移量

- (unsigned long long)offsetInFile

将文件的长度设置为offset字节

- (void)truncateFileAtOffset:(unsigned long long)offset

关闭文件

- (void)closeFile
P.S. (网络socket中)通过initWithFileDescriptor初始化的对象,需要显式调用此方法;其它方法创建的对象会自动打开文件,该对象被销毁时会自动关闭该方法,不需显式调用此方法。

参考博客 http://www.cnblogs.com/jy578154186/archive/2013/02/27/2935152.html

iOS NSFileManager 使用详解的更多相关文章

  1. ios NSFileManager 用法详解

    转自:http://blog.csdn.net/ios_che/article/details/7287266 iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过ipho ...

  2. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

  3. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  4. iOS中-Qutarz2D详解及使用

    在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

  5. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  6. iOS开发——Block详解

    iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...

  7. iOS开发:详解Objective-C runTime

    Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...

  8. 了解iOS消息推送一文就够:史上最全iOS Push技术详解

    本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...

  9. iOS开发者证书-详解

    iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...

随机推荐

  1. 之二:CAKeyframeAnimation - 关键帧动画

    是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CA ...

  2. [Android]使用Kotlin开发Android(二)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4829007.html [TOC] 使用Kotlin+OkHtt ...

  3. [Android]对BaseAdapter中ViewHolder编写简化

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3642849.html 在Android项目中,经常都会用到Li ...

  4. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  5. iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解

    写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅. charles又名青花瓷,在iOS ...

  6. OSX常用快捷键

    编辑类 cmd+c复制    cmd+x剪切     cmd+v粘贴      cmd+s保存     cmd+z撤销 文件类 cmd+c   cmd+v文件的复制粘贴    cmd+c   cmd+ ...

  7. android 数据存储Ⅱ

    本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...

  8. 设计模式 之 装饰者(Decorator)模式

    装饰者模式(Decorator):动态地为一个对象添加一些额外的职责,若要扩展一个对象的功能,装饰者提供了比继承更有弹性的替代方案. 结构图: 抽象构件类(Component):给出一个抽象的接口,用 ...

  9. jquery实现当前页面按钮点击全屏,点击退出全屏

    var fullscreen=function(){ elem=document.body; if(elem.webkitRequestFullScreen){ elem.webkitRequestF ...

  10. Oracle BIEE 环境迁移所导致的账号登陆问题的解决

    系统版本 系统版本:11G(11.1.1.9) 问题描述 将系统数据(RPD.catalog等数据)迁移到另一环境(版本同样为11G)后,老系统weblogic控制台中添加的账户在新系统(仪表盘)中无 ...