基础框架 允许 你 对 文件系统 进行访问,并且 对 文件 和 目录 进行基本的操作。你 可以对 NSFileManager这类物件 采取 各种措施 来办到 下面这些事情:
- 创建 新文件
- 从已经存在的文件当中 读取
- 将 数据 写入 文件
- 给 文件 重命名
- 移除 文件
- 检查 某个文件 是否存在
- 获取 文件的大小 或 其他信息
- 复制 文件
- 检查 两个文件的内容 是否一致
你 也可以对 目录 进行 这些操作,比如 创建 新目录,读取 其中的内容 或者 将 其 删除。另外 你 还可以将 两个文件 链接起来,也就是 使 同样一个文件 以两个不同的名称存在 或者 同样一个文件 存在 在两个不同的目录当中。
通过对 NSFileHandle这类物件 采取 各种措施,你 可以办到 这样一些事情:
- 打开 文件 进行 读、写 或者 使 其 保持最新
- 在文件当中 确定 某个特定的位置
- 从文件当中 读取 若干字节的数据 或者 将 若干字节的数据 写入 文件
NSFileManager这类物件,也就是 文件管理器物件,利用 文件的路径名称 对 文件 或者 目录 进行识别。路径名称 是 NSString类型的字符串物件。路径名称 既可以是 相对路径 也可以是 绝对路径。于是 copy1.m这个文件名 指的是 当前目录中的文件copy1.m。目录名称 与 目录名称、目录名称 与 文件名称之间 用 斜杠 分开。ch16/copy1.m这个路径名称 就是 相对路径,表明 copy1.m这个文件 包含 在ch16这个目录当中,而 ch16这个目录 又包含 在当前目录中。
绝对路径 用 斜杠/ 开头。斜杠 其实 是 一个目录,叫做 底层目录 或者 根目录。在我的mac上,我的主目录的绝对路径 就是 /Users/Zijin。这个路径名称 列举出了 三个目录,它们 分别是:底层目录、Users 和 Zijin。
~这个字符 用来代表 用户主目录,比如 ~Zijin 就表示 /Users/Zijin。~/copy1.m 代表 copy1.m这个文件 存储 在当前用户的主目录当中。在使用 NSFileHandle这类物件时,其它UNIX风格的路径字符,比如 代表当前目录的. 和 代表当前目录所在的上层目录的.. 都应该去掉。
在程序当中 你 尽量 应该避免 手工 输入 路径名称。基础框架 为 你 提供了 一些列的措施 或者 函数。这些措施 或者 函数 可以用来获取 当前目录、用户的主目录、临时文件夹目录 或者 文档目录。
下面这个表格中的措施 适用于 NSFileManager这类物件:
措施名称 | 描述 |
-(NSData *)contentsAtPath:path | 从path所代表的文件中读取数据 |
-(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr | 将数据写入文件 |
-(BOOL)removeFileAtPath:path handler:handler | 将path所代表的文件删除 |
-(BOOL)movePath:from toPath:to handler:handler | 移动或者重命名文件,to所代表的文件不能是已经存在的文件 |
-(BOOL)copyPath:from toPath:to handler:handler | 复制文件,to所代表的文件不能是已经存在的文件 |
-(BOOL)contentsEqualAtPath:path1 andPath:path2 | 比较path1和path2所代表的文件 |
-(BOOL)fileExistsAtPath:path | 检查path所代表的文件是否存在 |
-(BOOL)isReadableFileAtPath:path | 检查path所代表的文件是否存在、是否可读 |
-(BOOL)isWritableFileAtPath:path | 检查path所代表的文件是否存在、是否可写 |
-(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag | 获取path所代表的文件属性 |
-(BOOL)changeFileAttributes:attr atPath:path | 改变文件属性 |