NSFileManager
NSFileManager 类使您能够执行许多通用文件系统操作并隔离应用程序与底层文件系统。大多数文件操作可以执行使用共享文件管理器对象。在 iOS 和 Mac OS X v10.5 之后,您还可以创建一个独特的实例 NSFileManager 在这种情况下,您想要使用一个委托对象的文件管理器。
在 Cocoa 应用程序中,一个文件管理器对象通常是第一个与文件系统的交互。你用这个对象来定位,创建、复制和移动文件和目录。你也用这个对象来得到有关文件和目录的信息,比如尺寸,修改日期,BSD 许可。您还可以使用一个文件管理器对象改变许多文件和目录的属性的值。NSFileManager 类支持 NSURL 和 NSString 类方法指定文件或目录的位置。使用的指定文件系统一般采用 NSURL 类物品,因为他们可以转换路径信息更有效的内部表示。你也可以获得一个书签从 NSURL 对象,类似于一个别名和提供了一个更确定的方式定位文件或目录。如果你是移动、复制、链接或删除文件或目录,您可以使用一个委托与文件管理器对象来管理这些操作。代表的职责是确认操作和错误发生时决定是否继续。在 Mac OS Xv10.7后来,代表必须符合NSFileManagerDelegate协议。在iOS 5.0,后来在Mac OS Xv10.7 后来,NSFileManager 包括方法来管理项目存储在云。云存储的文件和目录标记同步到 iCloud,这样就可以提供给用户的 iOS 设备和 Macintosh 电脑。改变一个项目在一个位置传播到其他地点,确保所有物品保持同步。
线程考虑共享
NSFileManager 对象的方法可以从多个线程调用安全。然而,如果您使用一个委托接收通知的状态移动,复制,删除和链接操作,您应该创建一个独特的文件管理器的实例对象,该对象分配你的委托,并使用文件管理器启动您的操作。
任务
创建一个文件管理器
——init(第 641 页)
返回一个 NSFileManager 初始化实例。
+ defaultManager(609 页)
返回进程的共享文件管理器对象。
定位系统目录
- URLForDirectory:inDomain:appropriateForURL:create:error:(第663页)定位和选
择创建指定的领域中常用的目录。
函数原型:
-(NSURL*)URLForDirectory:(NSSearchPathDirectory)directoryinDomain:(NSSearchPathDomainMask)domain appropriateForURL:(NSURL *)urlcreate:(BOOL)shouldCreate error:(NSError **)error
参数
directory :搜索路径目录。描述的支持值 NSSearchPathDirectory(2270 页)。Domain:搜索的文件系统。这个参数的值是常数描述 NSSearchPathDomainMask(2273页)。你应该为你的搜索指定只有一个域,你可能不会为这个参数指定NSAllDomainsMask 常数。
url :目录里面的您希望创建一个独特的临时目录中自动保存文档或其他使用的名字。这个参数被忽略,除非目录参数包含 NSItemReplacementDirectory 和域参数的值包含NSUserDomainMask。当创建一个临时目录,shouldCreate 参数被忽略和目录总是创建的。
shouldCreate 指定 YES 如果你想要创建的目录,如果它不存在。Error:一个错误对象的指针。如果出现错误,此指针设置为一个实际的错误对象包含错误信息。你为这个参数可以指定为零,如果你不希望这个错误信息。
Return Value:请求目录的 NSURL 或零如果发生错误。
Discussion您通常使用这种方法来定位一个标准的系统目录,如文档、应用程序支持或缓存目录。您还可以使用这个方法来创建一个新的临时目录用于存储诸如自动保存文件;为此,指定目录参数,NSItemReplacementDirectory NSUserDomainMask 域参数,有效的父目录的url 参数。定位(或创建)所需的目录后,该方法将返回该目录的 URL。如果不止一个适当的目录存在于指定的域,这种方法只返回第一个找到。目录里面的名字,您希望创建一个独特的临时目录中自动保存文档或其他使用。这个参数被忽略,除非目录参数包含 NSItemReplacementDirectory 和域参数的值包含NSUserDomainMask 价值。当创建一个临时目录,shouldCreate 参数被忽略和总是创建的目录。通过目录和域对毫无意义 ( 例如 NSDesktopDirectory 和NSNetworkDomainMask)提出了一个例外。
NSSearchPathDirectory
These constants specify the location of a variety of directories.enum { NSApplicationDirectory = 1,
NSDemoApplicationDirectory,NSDeveloperApplicationDirectory,NSAdminApplicationDirectory,
NSLibraryDirectory,NSDeveloperDirectory,
NSUserDirectory,NSDocumentationDirectory,
NSDocumentDirectory,NSCoreServiceDirectory,NSAutosavedInformationDirectory = 11,
NSDesktopDirectory = 12,NSCachesDirectory = 13,
NSApplicationSupportDirectory = 14,NSDownloadsDirectory = 15,
NSInputMethodsDirectory = 16,NSMoviesDirectory = 17,
NSMusicDirectory = 18,NSPicturesDirectory = 19,NSPrinterDescriptionDirectory = 20,
NSSharedPublicDirectory = 21,NSPreferencePanesDirectory = 22,
NSItemReplacementDirectory = 99,
NSAllApplicationsDirectory = 100,NSAllLibrariesDirectory = 101
}; typedef NSUInteger NSSearchPathDirectory;Constants
NSApplicationDirectory 支持应用程序(或应用程序)。在 iOS 2.0 和以后。NSDemoApplicationDirectory 不支持的应用程序和演示版本。在 iOS 2.0 和以后。
NSDeveloperApplicationDirectory 开发者应用程序 (/ 开发 / 应用程序 ) 。NSAdminApplicationDirectory 系统和网络管理应用程序。
NSLibraryDirectory 各种用户可见的文档、支持和配置文件(/库)。NSDeveloperDirectory开发人员资源(/开发人员)。弃用:从 Xcode 3.0 开始,开发工具可以安装在任何位置。在iOS 2.0 和以后。
NSUserDirectory 用户家目录(/用户)。
NSDocumentationDirectory 文档。
NSDocumentDirectory 文档目录。
NSCoreServiceDirectory 核心服务的位置(系统/图书馆/ CoreServices)。NSAutosavedInformationDirectory 用户的自动保存的文档库/自动保存的位置信息在iOS 4.0 和以后。
NSDesktopDirectory 用户的桌面目录的位置。
NSCachesDirectory 可废弃的缓存文件的位置 ( 图书馆 / 缓存 ) 。NSApplicationSupportDirectory 应用程序支持文件的位置(图书馆/应用程序支持)。NSDownloadsDirectory 用户的下载目录的位置。NSDownloadsDirectory flags 只会产生一个路径只有当 NSUserDomainMask 提供。
NSInputMethodsDirectory 输入方法(图书馆/输入方法)位置
NSMoviesDirectory 用户的电影目录(~ /电影)位置
NSMusicDirectory 用户的电影目录(~ /音乐)位置
NSPicturesDirectory 用户的电影目录(~ /图片)位置
NSPrinterDescriptionDirectory 位置系统的 PPDs 目录(图书馆/打印机/ PPDs)位置NSSharedPublicDirectory 用户的公共共享目录的位置(~ /公众)NSPreferencePanesDirectory PreferencePanes 目 录 的 位 置 使 用 系 统 设 置 ( 图 书 馆 /PreferencePanes)
NSItemReplacementDirectory
NSFileManager 调用 URLForDirectory:inDomain:appropriateForURL:creat:error 方法时使用
NSAllApplicationsDirectory 应用程序可以发生的所有目录。
NSAllLibrariesDirectory 资源可以发生的所有目录。
NSSearchPathDomainMask
Search path domain constants specifying base locations for the NSSearchPathDirectory (page 2270)type.
Constants
enum { NSUserDomainMask = 1,
NSLocalDomainMask = 2,NSNetworkDomainMask = 4,
NSSystemDomainMask = 8,
NSAllDomainsMask = 0x0ffff,
}; typedef NSUInteger NSSearchPathDomainMask;
NSUserDomainMask 用户的主目录——安装用户的个人物品 (~) 位置。NSLocalDomainMask 当前的机器——这台机器上的安装的为每一个人提供服务的项目的地方。
NSNetworkDomainMask 在当地网络环境中公开可用的地方——安装网络中可用的物品(/网络)位置。
NSSystemDomainMask 有 Apple 提供的不能提供的修改(/系统)。
NSAllDomainsMask 所有域。包括所有上面的和未来的项目。
- URLsForDirectory:inDomains(666 页):返回一个数组指定的公共目录的 url 请求的域。
Discovering Directory Contents 发现目录内容
- contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error: (616 页)- 执行一个浅搜索指定的目录,并返回 url 所包含的项目。
- - contentsOfDirectoryAtPath:error: (第 615 页)
- 执行一个浅搜索指定的目录并返回包含项目的路径。
- enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:(632 页)
- 返回目录枚举器对象,可以用来执行深枚举指定目录的 URL。
- enumeratorAtPath:(630 页)返回目录枚举器对象,可以用来执行深枚举指定目录的路径。
- mountedVolumeURLsIncludingResourceValuesForKeys:options:(648页)的url返回一个数组标识安装卷计算机上可用。
- subpathsOfDirectoryAtPath:error:(第 662 页)执行深枚举指定的目录,返回所有包含的子目录的路径。
- subpathsAtPath:(661 页)返回一个字符串数组标识指定目录中的所有项目的路径。Creating and Deleting Items
- createDirectoryAtURL:withIntermediateDirectories:attributes:error:(622 页)
- 在指定的 URL 上依据提供的属性创建一个目录
- createDirectoryAtPath:withIntermediateDirectories:attributes:error:(621 页)- 在指定的路径上依据提供的属性创建一个目录
- createFileAtPath:attributes:error:(623 页)
- 创建了一个文件,在给定的位置和指定的属性。
- removeItemAtURL:error:(第 653 页)
- 删除文件或目录在指定 URL。
- removeItemAtPath:错误:(第 652 页)
删除指定的文件或目录在指定的路径。-replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error(第 654 页)
以确保不发生数据丢失方式,在指定的 URL 替代 Item 的内容的。
Moving and Copying Items
- copyItemAtURL:toURL:error:(618 页)
- 同步的复制指定 URL 的文件到一个新的位置。
- copyItemAtPath:toPath:error:(617 页)
- 同步的复制指定路径的 Item 到一个新的位置。
- moveItemAtURL:toURL:error:(650 页)同步的移动指定 URL 的文件或目录到一个新的位置。
- moveItemAtPath:toPath:error:(649 页)同步的移动指定路径的文件或目录到一个新的位置。Managing ICloud-Based Items
- setUbiquitous:itemAtURL:destinationURL:error:(第 657 页)设置项是否在指定的 URL 应该存储在云中。
- startDownloadingUbiquitousItemAtURL:error:(第 659 页)开始下载(如果需要)到本地系统指定的项。
- isUbiquitousItemAtURL:(645 页)
- 返回一个布尔指示项是否针对存储在 iCloud。
- URLForUbiquityContainerIdentifier:(665 页)
- 返回与指定的容器相关联 iCloud 目录 ID。
- URLForPublishingUbiquitousItemAtURL:expirationDate:error:(664 页)
- 返回一个 URL,可以发电子邮件给用户让他们下载基于云的条目的副本。- evictUbiquitousItemAtURL:error:(第 635 页)
- 删除指定的云计算项目的本地副本。
- Creating Symbolic and Hard Links 创建符号和硬链接
- createSymbolicLinkAtURL:withDestinationURL:error:(626 页)
- 创建一个符号链接指定 URL 指向一个项目在给定的 URL。
- createSymbolicLinkAtPath:withDestinationPath:error:(625 页)
- 创建一个符号链接指向指定的目的地。
- - linkItemAtURL:toURL:error:(第 647 页)
- 创建了一个硬链接之间的物品在指定的 url。
- linkItemAtPath:toPath:error:(第 646 页)
- 创建了一个硬链接之间的物品在指定的路径。
- destinationOfSymbolicLinkAtPath:error:(628 页)
- 返回项的路径指向的符号链接。
- Determining Access to Files
- fileExistsAtPath:(637 页)
- 返回一个布尔值,用于显示在一个指定路径上文件或目录是否存。
- fileExistsAtPath:isDirectory:(638 页)
- 返回一个布尔值,用于显示在一个指定路径上文件或目录是否存。
- isReadableFileAtPath:(644 页)返回一个布尔值,用于显示调用对象似乎能够读取指定文件。
- isWritableFileAtPath:(646 页)返回一个布尔值,用于显示调用对象在一个指定的文件中似乎能够编写。- isExecutableFileAtPath:(643 页)返回一个布尔值,用于显示操作系统在一个指定的文件中似乎能够执行。- isDeletableFileAtPath:(642 页)
返回一个布尔值,用于显示调用对象似乎能够删除指定的文件。Getting and Setting Attributes 获取和设置属性
- componentsToDisplayForPath:(613 页)返回一个字符串数组代表一个给定的用户可见的组件的路径。- displayNameAtPath:(629 页)返回显示文件或目录的名称在指定的路径。
- attributesOfItemAtPath:error:(610 页)
返回物品的属性在给定的路径。
- attributesOfFileSystemForPath:error:(609 页)返回一个描述的属性字典安装文件系统在给定的路径所在。
- setAttributes:ofItemAtPath:error:(656 页)
指定的文件或目录的属性集。
Getting and Comparing File Contents 获取和比较文件内容
- contentsAtPath:(614 页)
- 返回文件的内容在指定的路径。返回值为 NSSata*
- contentsEqualAtPath:andPath:(614 页)返回一个布尔值,用于显示指定路径的文件或目录是否有相同的内容。Converting File Paths to Strings 将文件路径转换为字符串
- fileSystemRepresentationWithPath:(641 页)
返回一个 char*表示给定路径的正确编码 Unicode 字符串使用的文件系统。- stringWithFileSystemRepresentation:length:(660 页)
- 返回一个 NSString 对象的内容来自指定 char*。
- Managing the Delegate
- – setDelegate: (page 657)
Sets the delegate for the receiver.- – delegate (page 627)
Returns the delegate for the receiver.
- Managing the Current Directory 管理当前目录- changeCurrentDirectoryPath:(611 页)
- 改变当前工作目录的路径到指定的路径
- currentDirectoryPath(627 页)返回程序的当前目录的路径。