NSPathUtilities.h

作者:追风剑情 发布于:2019-3-5 13:48 分类:Objective-C

NSPathUtilities.h包含了NSString的函数和分类扩展,它允许你操作路径名。应该尽可能地使用这些函数,以便使程序更独立于文件系统结构及特定文件和目录的位置。

NSString中常用的路径工具方法
方法 描述
+(NSString *) pathWithComponents: components 根据components中的元素构造有效路径
-(NSArray *) pathComponents 析构路径,获得组成此路径的各个部分
-(NSString *) lastPathComponents 提取路径的最后一个组成部分
-(NSString *) pathExtension 从路径的最后一个组成部分中提取其扩展
-(NSString *) stringByAppendingPathComponent: path 将path添加到现有路径的末尾
-(NSString *) stringByAppendingPathExtension: ext 将指定的扩展名添加到路径的最后一个组成部分
-(NSString *) stringByDeletingLastPathComponent 删除路径的最后一个组成部分
-(NSString *) stringByDeletingPathExtension 从文件的最后一部分删除扩展名
-(NSString *) stringByExpandingTildeInPath 将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
-(NSString *) stringByResolvingSymlinksInPath 尝试解析路径中的符号链接
-(NSString *) stringByStandardizingPath 通过尝试解析~、..(父目录符号)、.(当前目录符号)和符号链接来标准化路径

常用的路径工具函数
函数 描述
NSString *NSUserName(void) 返回当前用户的登录名
NSString *NSFullUserName(void) 返回当前用户的完整用户名
NSString *NSHomeDirectory(void) 返回当前用户主目录的路径
NSString *NSHomeDirectoryForUser(NSString *user) 返回用户user的主目录
NSString *NSTemporaryDirectory(void) 返回可用于创建临时文件的路径目录

注意:当为iOS编写程序时,NSSearchPathForDirectoriesInDomains函数的第二个参数应是NSUserDomainMask,并希望得到一个包含单个路径的数组作为返回。

示例

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *fName = @"path.m";
        NSFileManager *fm;
        NSString *path, *tempdir, *extension, *homedir, *fullpath;
        NSArray *components;
        
        fm = [NSFileManager defaultManager];
        
        // 获取临时的工作目录
        tempdir = NSTemporaryDirectory();
        NSLog(@"Temporary Directory is %@", tempdir);
        
        // 从当前目录中提取基本目录
        path = [fm currentDirectoryPath];
        NSLog(@"Base dir is %@", [path lastPathComponent]);
        
        // 创建文件fName在当前目录中的完整路径
        fullpath = [path stringByAppendingPathComponent: fName];
        NSLog(@"fullpath to %@ is %@", fName, fullpath);
        
        // 获取文件扩展名
        extension = [fullpath pathExtension];
        NSLog(@"extension for %@ is %@", fullpath, extension);
        
        // 获取用户的主目录
        homedir = NSHomeDirectory();
        NSLog(@"Your home directory is %@", homedir);
        
        // 拆分路径为各组成部分
        components = [homedir pathComponents];
        for (path in components)
            NSLog(@"%@", path);
        
        // 每个应用程序都有自己的Documents和Caches目录供存储数据。
        // NSSearchPathForDirectoriesInDomains用于查找系统的特殊目录,如
        // Application和Documents目录。
        // 第一个参数指查找路径,第二个参数可以是多个值,用于指定需要列出的目录,
        // 如用户的(NSUserDomainMask)、系统的(NSSystemDomainMask)或者所有目录(NSAllDomainsMask)
        // 最后一个参数用于指定是否展开路径中的~字符。
        // 找到Users/{用户名}目录
        NSArray *dirList = NSSearchPathForDirectoriesInDomains(
            NSDocumentDirectory, NSUserDomainMask, YES);
        NSLog(@"dirList count=%lu", [dirList count]);
        // 找到Users/{用户名}/Documents目录
        NSString *docDir = dirList[0];
        path = [docDir stringByAppendingPathComponent: @"saveFile"];
        NSLog(@"doc file: %@", path);
        
        // 查找Cache目录
        dirList = NSSearchPathForDirectoriesInDomains(
            NSCachesDirectory, NSUserDomainMask, YES);
        NSLog(@"dirList count=%lu", [dirList count]);
        NSString *cacheDir = dirList[0];
        path = [cacheDir stringByAppendingPathComponent: @"saveFile"];
        NSLog(@"cache file: %@", path);
    }
    return 0;
}

运行测试
111.png

示例二:常用的路径工具函数

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *path;
        // 返回当前用户的登录名
        path = NSUserName();
        NSLog(@"UserName: %@", path);
        
        // 返回当前用户的完整用户名
        path = NSFullUserName();
        NSLog(@"FullUserName: %@", path);
        
        // 返回当前用户主目录的路径
        path = NSHomeDirectory();
        NSLog(@"HomeDirectory: %@", path);
        
        // 返回用户user的主目录的路径
        path = NSHomeDirectoryForUser(@"YanShangGuang");
        NSLog(@"HomeDirectoryForUser: %@", path);
        
        // 返回可用于创建临时文件的路径目录
        path = NSTemporaryDirectory();
        NSLog(@"TemporaryDirectory: %@", path);
    }
    return 0;
}

运行测试
111.png


标签: Objective-C

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号