@interface NSFileManager : NSObject
@interface NSFileManager : NSObject
NSFileManager操作:
1.文件夹创建删除
2.文件创建删除
3.清除数据缓存
笔记:
NSFileManager的文件对象操作的优势:
NSFileManager. An advantage of file reference URLs is that they are less fragile than path-based URLs while your app is running. If the user moves a file in the Finder, any path-based URLs that refer to the file immediately become invalid and must be updated to the new path. However, as long as the file moved to another location on the same disk, its unique ID does not change and any file reference URLs remain valid.
1>sandbox中的执意要两大部分:bundle container and data container ,etc.,如图:

2>主要记录Data container
2.1>Documents/ 可以创建保存文件和文件夹,目的很明确,让用户创建和操作的文件(暴漏的)。文件的内容可以在iTunces备份。
2.2>Library/ 跟Documents文件差不多,但是它里面在创建之初就已经创建几个默认的文件夹了,eg:Caches/ Preferences/ etc.(Preference/ 中放着NSUserDefault关联的plist文件)
Caches/ 中存在SnapShot:app截图 。
2.3>Library/Application support/ 文件,一般是用户区创建也可以操作,但是是hidden(不暴漏的),用于存储配置文件,模板等app系统配置相关的文件。
3>Accessing Files and Directories(文件路径操作读写)
Before you can open a file, you first have to locate it in the file system. The system frameworks provide many routines for obtaining references to many well-known directories, such as the Library directory and its contents. You can also specify locations manually by building a URL or string-based path from known directory names. When you know the location of a file, you can then start planning the best way to access it. Depending on the type of file, you may have several options. For known file types, you typically use built-in system routines to read or write the file contents and give you an object that you can use. For custom file types, you may need to read the raw file data yourself.
Choose the Right Way to Accessing Files
Although you can open any file and read its contents - lists the common file types supported by the system along with information about how you access them.
读到这里,大体上说拼接一个Location来获取文件,有两种方法:NSURL和NSString
但是,官方文档说了,如果你想获取一个本地的地址,最好使用NSURL来获取本地地址Access文件,文档中说啦:
The preferred way to specify the location of a file or directory is to use the NSURL class. Although the NSString class has many methods related to path creation, URLs offer a more robust(牛逼的) way to locate files and directories. For apps that also work with network resources, URLs also mean that you can use one type of object to manage items located on a local file system or on a network server
建议用NSURL拼接本地地址
当然,官方文档又说了,还有一个东西跟NSURL功能可以互换的,叫做CGURLRef
Note: In addition to NSURL, you can also use the CFURLRef opaque type to manipulate paths as URLs. The NSURL class is toll-free bridged with the CFURLRef type, which means you can use them interchangeably in your code. For more information about how to create and manipulate URLs using Core Foundation, see CFURL Reference.
CGURLRef官方也推荐
使用NSURL来创建文件夹:
NSFileManager * shareFM = [NSFileManager defaultManager];
NSArray * possibleURLs = [shareFM URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL * appSupportDir = nil;
NSURL * appDirectory = nil;
)
{
appSupportDir = [possibleURLs objectAtIndex:];
}
if (appSupportDir)
{
NSString * appBundleID = [[NSBundle mainBundle] bundleIdentifier];
appDirectory = [appSupportDir URLByAppendingPathComponent:appBundleID];
[shareFM createDirectoryAtURL:appDirectory withIntermediateDirectories:YES attributes:nil error:nil];
}
NSLog(@"%@",appDirectory);
NSURL创建文件夹
4.Enumerating the Contents of a Directory // 遍历文件夹中文件
Enumerating a directory one file at a time is recommended when you want to search for a specific file and stop enumerating when you find it. File-by-file enumeration uses the NSDirectoryEnumerator class, which defines the methods for retrieving items. Because NSDirectoryEnumerator itself is an abstract class, however, you do not create instances of it directly. Instead, you use either the enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: or the enumeratorAtPath: method of NSFileManager object to obtain a concrete instance of the class for use in your enumeration.
遍历文件
5.Use Secure Coding Practices(使用安全编码规范)
5.1>删除一个空文件的时候,要求之前判断文件是空的时候,在执行删除。
5.2>在进行文件操作的时候权限不是执行操作独立的,所以在你创建一个文件之前判断她是不存在的,或者你必须肯定读,写数据的文件是你创建的。
5.3>无论任何时候,操作文件使用名称好过文件路径,这样的方式可以保证你一直操作同一个文件。
5.4>把创建文件的方法独立成一个方法,这样你可以更好的知道你所创建的文件是不是已经一个已经存在的。
5.5>读一个文件的时候,首先判断是否有是自己权限和你要操作的权限,这样可以避免程序hanging,在失败的时候可以进行很好的失败处理。
@interface NSFileManager : NSObject的更多相关文章
- iOS - OC NSFileManager 文件管理
前言 @interface NSFileManager : NSObject @interface NSFileHandle : NSObject <NSSecureCoding> NSF ...
- 用NSData和NSFileManager保存内存中的对象
曾经接触过iOS开发,并且开发过两个应用,纵然青涩,也算是一断美好的回忆.转眼就已经一年多了!现在回过头来决定再次拿起iOS开发. 下面讲NSData: NSdata的概念 1.使用文件时需要频繁地将 ...
- 【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式
我们在工作中使用文件NSFileManager上课时间,创建发现1对象,此2同样的对象地址: NSFileManager *file1=[NSFileManager defaultManager]; ...
- 数据持久化-存取方式总结&应用沙盒&文件管理NSFileManager
iOS应用数据存储的常用方式: 1.XML属性列表 (plist归档) 2.NSUserDefaults (偏好设置) 3.NSKeyedArchiver 归档(加密形式) 4.SQLi ...
- YYModel 源码解读(二)之NSObject+YYModel.h (2)
_YYModelMeta 这个内部的类主要是对这个类的描述.包含了和此类转换相关的数据. /// A class info in object model. @interface _YYModel ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
- iOS Class 使用NSProxy和NSObject设计代理类的差异
经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并 ...
- 只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed
//写法一: @interface Person : NSObject { } @property (nonatomic, strong) NSString *name; @end @implemen ...
- IOS OC声明变量在@interface括号中与使用@property的区别
方式一:直接在@interface中的大括号中声明. @interface MyTest : NSObject{ NSString *mystr; } 方式二:在@interface中声明,然后再在@ ...
随机推荐
- Nodejs基础:路径处理模块path总结
模块概览 在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块.部分因为文档说的不够清晰,部分因为接口的平台差异性. 将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了. 获取 ...
- ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...
- ModernUI教程:MEF应用向导
本文主要说明在Modern UI框架下使用MEF的必要步骤,关于MEF请自行脑补. MEF-INTO-MUI实例代码下载: MefMuiApp.zip 1:创建一个导出属性 ModernFrame用来 ...
- [BZOJ 1497][NOI 2006]最大获利(最大权闭合子图)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1497 分析: 这是在有向图中的问题,且边依赖于点,有向图中存在点.边之间的依赖关系可以 ...
- A Regularized Competition Model for Question Diffi culty Estimation in Community Question Answering Services-20160520
1.Information publication:EMNLP 2014 author:Jing Liu(在前一篇sigir基础上,拓展模型的论文) 2.What 衡量CQA中问题的困难程度,提出从两 ...
- chrome编辑DOM
来源于:https://developers.google.com/web/tools/chrome-devtools/inspect-styles/edit-dom The DOM tree vie ...
- android中通话录音
file = new File(Environment.getExternalStorageDirectory(), this.incomeNumber + System.currentTimeMil ...
- Web Api单元测试写法
例如我们在Web Api项目中有个Controller public class SomeController : ApiController { public HttpResponseMessage ...
- ansible解密
ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具.这个工具的目标有这么几项:让我们自动化部署APP:自动化管理 ...
- leetcode(一)Word Pattern
题目描述: Given a pattern and a string str, find if str follows the same pattern. Here follow means a fu ...