iOS NSFileManager 使用详解
使用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 使用详解的更多相关文章
- ios NSFileManager 用法详解
转自:http://blog.csdn.net/ios_che/article/details/7287266 iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过ipho ...
- iOS应用开发详解
<iOS应用开发详解> 基本信息 作者: 郭宏志 出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...
- 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )
原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- iOS开发——Block详解
iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...
- iOS开发:详解Objective-C runTime
Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...
- 了解iOS消息推送一文就够:史上最全iOS Push技术详解
本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...
- iOS开发者证书-详解
iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...
随机推荐
- Ioc Autofac心得
对于这个容器注入,个人也不是很熟悉,很多还不懂,只会基本的操作,几天把它记录下来,说不定以后帮助就大了呢,这方面跟安卓差距还是挺大的 下面记录下应用的流程 步骤: 1.添加应用 2.重写工厂(这里讲的 ...
- 【iOS】block的使用
Block 是iOS在4.0之后新增的程式语法,一般用于回调方法,功能上和delegate类似.本文将讲解block的几种常见的使用方法,当然,block中最值得注意的还是它的内存管理,我将在< ...
- Swift开发第十二篇——protocol组合&static和class
本篇分为两部分: 一.Swift 中 protocol 组合的使用 二.Swfit 中 static和class 的使用 一.Swift 中 protocol 组合的使用 在 Swift 中我们可以使 ...
- 配置Kotlin环境(DataBinding)
1.安装Kotlin插件 在plugin中搜索kotlin,安装两个kotlin插件,重新启动Android Studio.2.build.gradle(project level) buildscr ...
- symfony2 安装并创建第一个页面
1.安装和配置 参考 http://symfony.cn/docs/book/installation.html 使用安装工具: windows系统 Open your command console ...
- 最新Sublime Text 2 激活 汉化
0x00 Sublime Text 2 Sublime Text 2 是一个轻量.简洁.高效.跨平台的编辑器,一直在使用它,简直是coder的必备神器,自从使用它之后就深深爱上它了(/▽\=),可能因 ...
- 实战Ubuntu Server上配置LXDE+VNC环境
1.安装x-window 使用apt-get 安装 xorg sudo apt-get install xorg 如果提示以下内容,就说明需要update下源列表,使用sudo apt-get upd ...
- Flume应用场景及架构原理
Flume概念 Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. ...
- javascript-建造者模式
建造者模式笔记 1.工厂模式主要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么,不关心你创建的整个过程,仅仅需要知道你最终创建的结果 2.建造者模式目的也是为了创建对象,但是 ...
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引, 然后又扯到了目录查找来帮助读者记忆....问题就在这里,我们不是学文科,, ...