NSFileManager代表文件管理器。当开发者使用NSFileManager执行移动 ,复制,链接,删除文件或目录 时,程序可以为 NSFileManager提供配套的事件委托(实现了 NSFileManagerDelegate 协议的对象),该委托对象用于 确保移动 ,复制,链接,删除操作的成功过完成,并为前面的几种操作提供相应的处理方法。
NSFileManager采用文件名作为文件的唯一标识。每个文件名都是一个普通的 NSString 对象,它既可是 绝对路径,也可以是相对路径。
(Mac 系统下的)绝对路径与相对路径
相对路径:不以斜线开头的路径 都是相对路径。如,code/abc.m 代表,当前路径下code目录下的 abc.m 文件。相对路径都是以当前路径作为基础路径。——随着当前路径的变化,同一个相对路径实际代表的文件可能发生变化,,在终窗口输入 pwd 命令,既可看到 当前路径。
绝对路径:以 斜线(代表 根目录)开头的路径。绝对路径是唯一的 。它代表的文件/目录总是固定的。比如:/Users/abc,代表根目录下Users目录下的 abc 子目录。
MAC OS X 中 包括的几种特殊路径:
~
:代表当前用户的Home 目录。for example:
- 当前用户为 albert, 那么~
就代表 /Users/ albert;
- 还可以写成 :~xyz,代表 xyz 用户的 Home 目录 ,即 /Users/ xyz;
.
:代表当前目录。
..
: 代表当前目录的上一级目录。
NSFileManager访问文件属性 和内容
程序可以调用NSFileManager的defaultManager
类方法来获取系统默认的NSFileManager对象,一旦获取了NSFileManager对象,,就可以调用NSFileManager的方法操作系统的文件项目。
示例代码:
NSFileManagerTest.m
#import <Foundation/Foundation.h>int main(int argc , char * argv[])
{@autoreleasepool{NSFileManager* fm = [NSFileManager defaultManager];// 将会输出代表真的1NSLog(@"NSFileManagerTest.m是否存在:%d", [fm fileExistsAtPath:@"NSFileManagerTest.m"]);BOOL isDir;NSLog(@"NSFileManagerTest.m是否存在:%d", [fm fileExistsAtPath:@"NSFileManagerTest.m"isDirectory: &isDir]);// 将会输出代表假的0NSLog(@"NSFileManagerTest.m是否为目录:%d", isDir);// 将会输出代表真的1NSLog(@"NSFileManagerTest.m是否为可读文件:%d", [fm isReadableFileAtPath:@"NSFileManagerTest.m"]);// 将会输出代表真的1NSLog(@