当前位置: 代码迷 >> 综合 >> 【IOS 开发学习总结-OC-34】★★文件 I/O——NSFileManager 管理文件和目录
  详细解决方案

【IOS 开发学习总结-OC-34】★★文件 I/O——NSFileManager 管理文件和目录

热度:32   发布时间:2024-01-19 01:31:44.0

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(@