以下文章翻译自Apple官方文档:
https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/index.html#//apple_ref/doc/uid/TP40003660
NSFileManager
对象允许您检查文件系统的内容,并对其进行更改。一个文件管理器(NSFileManager)对象通常是第一个与文件系统交互的。可以用它来定位、创建、复制和移动文件和目录。你也可以用它来得到一个文件或目录的信息并改变它的一些属性。
NSFileManager
类提供了方便的方法来访问共享的文件管理器,且适用于大多数类型的与文件相关的操作。如果你打算使用文件管理器对象的更多操作,比如你想设置NSFileManager
的代理,就需要单独创建一个NSFileManager
实例。
如果有指定的文件位置时,你可以使用NSURL
和NSString
对象。NSURL
类一般是用于指定文件系统项的首选,因为他们可以把路径信息更高效的内部表示。你也可以从一个NSURL
对象获得一个书签,它类似于一个提供了更肯定的方式定位文件或目录的别名
如果你正在移动、复制、链接或删除文件或目录,你可以使用“委托”与“文件管理器”对象一起管理这些操作。“委托”的角色是确认操作,并决定是否在发生错误时操作还继续进行。在OS X v10.7或以后,委托必须实现NSFileManagerDelegate
协议。
在OS X v10.7+和iOS5+,NSFileManager
包括用户管理存储在iCloud中文件的方法。文件和目录标记为云存储并同步到iCloud,他们可以提供给用户的iOS设备Mac电脑。把一个位置中的一个项目的变化传播到所有其他地方,以确保项目保持同步。
线程的考虑
共享NSFileManager
的方法:+ defaultManager
可以被多个线程安全的访问。但是,如果你想使用委托来接收关于移动、复制、删除和链接操作的状态的通知,你应该创建一个新的NSFileManager
实例,把委托分配给该对象,并使用该NSFileManager
对象启动你的相关操作。
创建一个 File Manager
- init
返回一个初始化的 NSFileManager
实例。
+defaultManager
返回默认的管理文件系统的NSFileManager
实例。
定位系统目录
- URLForDirectory:inDomain:appropriateForURL:create:error:
定位并选择性地在domain中创建指定的目录。
查找目录内容
- contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:
执行一个浅搜索并返回指定目录的url所包含的项目。
- contentsOfDirectoryAtPath:error:
执行一个浅搜索并返回指定目录的任何包含项目的路径。
- enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:
返回目录枚举器对象,可以用来执行深枚举指定目录的URL。
- enumeratorAtPath:
返回目录枚举器对象,可以用来在指定的路径中的目录进行深枚举。
- mountedVolumeURLsIncludingResourceValuesForKeys:options:
返回一个确定在计算机上可用的安装卷的网址的数组。
- subpathsOfDirectoryAtPath:error:
执行指定的目录深度枚举并返回所有包含的子目录的路径。
- subpathsAtPath:
返回一个字符串数组,确定指定目录中的所有项目的路径。
创建和删除项目
- createDirectoryAtURL:withIntermediateDirectories:attributes:error:
在指定的网址创建一个给定属性的目录。
- createDirectoryAtPath:withIntermediateDirectories:attributes:error:
创建一个在指定的路径属性目录。
- createFileAtPath:contents:attributes:
在指定的位置创建指定的内容和属性的文件。
- removeItemAtURL:error:
在指定的网址中删除文件或目录。
- removeItemAtPath:error:
在指定路径中删除文件或目录。
- replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:
替换项目的内容在以确保不会丢失任何数据指定的URL时。
移动和复制
- copyItemAtURL:toURL:error:
将指定的URL下的项目复制到一个新的位置,保持同步。
- copyItemAtPath:toPath:error:
将指定路径的项目复制到一个新的位置,保持同步。
- moveItemAtURL:toURL:error:
将指定的URL下的项目移动到一个新的位置,保持同步。
- moveItemAtPath:toPath:error:
将指定路径的项目移动到一个新的位置,保持同步。
基于项目管理的iCloud
ubiquityIdentityToken
Property
一个不透明的令牌表示当前用户的iCloud身份(只读)
- URLForUbiquityContainerIdentifier:
返回具有指定标识符建立访问iCloud容器相关的URL。
- isUbiquitousItemAtURL:
返回一个布尔值,指示是否该项目是针对存储在iCloud。
- setUbiquitous:itemAtURL:destinationURL:error:
设置指定的网址中的项目是否应该存储在云中。
- startDownloadingUbiquitousItemAtURL:error:
开始下载(如果必要)指定的项目到本地系统。
- evictUbiquitousItemAtURL:error:
Removes the local copy of the specified cloud-based item.
- URLForPublishingUbiquitousItemAtURL:expirationDate:error:
返回一个链接,可以通过电子邮件发送给用户,让他们下载一个基于平面文件项云复制。
创建符号和硬链接
- createSymbolicLinkAtURL:withDestinationURL:error:
在指定的网址创建一个指定的指向某个项目的符号链接。
- createSymbolicLinkAtPath:withDestinationPath:error:
创建指向指定目的地的符号链接。
- linkItemAtURL:toURL:error:
在指定的网址的项目之间创建一个硬链接。
- linkItemAtPath:toPath:error:
在指定的路径上创建项目之间的硬连接。
- destinationOfSymbolicLinkAtPath:error:
返回指向的项的符号链接的路径。
确定文件是否可访问
- fileExistsAtPath:
返回一个布尔值,指定路径中的文件或目录是否存在。
- fileExistsAtPath:isDirectory:
返回一个布尔值,指定路径中的文件或目录是否存在。isDirectory
参数表示该路径指向的是一个目录或普通文件。
- isReadableFileAtPath:
返回一个布尔值,该值指示调用对象是否能够读取指定的文件。
- isWritableFileAtPath:
返回一个布尔值,该值指示调用对象是否能够写入指定的文件。
- isExecutableFileAtPath:
返回一个布尔值,该值指示操作系统是否能够执行指定的文件。
- isDeletableFileAtPath:
返回一个布尔值,该值指示调用对象是否能够删除指定的文件。
获取和设置属性
- componentsToDisplayForPath:
返回一个表示给定路径的用户可见组件的字符串数组。
- displayNameAtPath:
返回指定路径中的文件或目录的显示名称。
- attributesOfItemAtPath:error:
返回给定路径中的项目的属性。
- attributesOfFileSystemForPath:error:
返回一个字典,描述了一个给定路径驻留的安装的文件系统的属性。
- setAttributes:ofItemAtPath:error:
设置指定的文件或目录的属性。
获取和比较文件内容
- contentsAtPath:
返回指定路径中的文件的内容。
- contentsEqualAtPath:andPath:
返回一个布尔值,该值指示在指定的路径中的文件或目录是否具有相同的内容。
获取项目之间的关系
- getRelationship:ofDirectoryAtURL:toItemAtURL:error:
确定目录和项目之间存在的关系的类型。
- getRelationship:ofDirectory:inDomain:toItemAtURL:error:
确定系统目录和指定项目之间存在的关系的类型。
将文件路径转换为字符串
- fileSystemRepresentationWithPath:
返回一个C字符串表示一个给定的路径正确编码的Unicode字符串使用的文件系统。
- stringWithFileSystemRepresentation:length:
返回一个字符串对象,里面包含的内容是指定的C字符串路径
管理委托
delegate
Property
管理当前目录
- changeCurrentDirectoryPath:
将当前工作目录的路径更改为指定的路径。
currentDirectoryPath
Property
过时的方法
- changeFileAttributes:atPath: (iOS 2.0)
- fileAttributesAtPath:traverseLink: (iOS 2.0)
- fileSystemAttributesAtPath: (iOS 2.0)
- directoryContentsAtPath: (iOS 2.0)
- createDirectoryAtPath:attributes: (iOS 2.0)
- createSymbolicLinkAtPath:pathContent: (iOS 2.0)
- pathContentOfSymbolicLinkAtPath: (iOS 2.0)
fileManager:shouldProceedAfterError: (iOS 2.0)
fileManager:willProcessPath: (iOS 2.0)
常数
VolumeEnumerationOptions
DirectoryEnumerationOptions
ItemReplacementOptions
File Attribute Keys
NSFileType Attribute Values
File-System Attribute Keys
File Protection Values
URLRelationship
Resource Fork Support
通知
NSUbiquityIdentityDidChangeNotification