【IOS 开发学习总结-OC-35】★文件 I/O——NSPathUtilities.h管理路径+NSProcessInfo获取进程信息
来源:互联网 发布:linux制作iso镜像文件 编辑:程序博客网 时间:2024/05/10 14:27
NSPathUtilities.h管理路径
NSPathUtilities.h包含了对 NSString 类的扩展,从而为 NSString 类新增了一些专门用于操作路径的方法。——主要作用是更方便地操作路径。
对 NSString 类扩展了如下方法:
+ (NSString *)pathWithComponents:(NSArray<NSString *> *)components;
——根据components中的元素构造有效的路径pathComponents:
——分拆路径,返回该路径中各部分所组成的数组;isAbsolutePath
——判断该路径是否为绝对路径;lastPathComponent
——提取该路径的最后偶一个组成部分。pathExtension
——从路径最后一个组成部分提取扩展名。stringByDeletingLastPathComponent
——删除路径最后一个组成部分stringByAppendingPathComponent
——将 path 添加到现有路径的结尾处stringByDeletingPathExtension
——删除路径最后一个组成部分的扩展名- (nullable NSString *)stringByAppendingPathExtension:(NSString *)str;
——将指定扩展名添加到现有路径的结尾处- ⭐️
stringByAbbreviatingWithTildeInPath
——将路径中当前用户的 home 路径替换为~;将路径中指定 当前用户的 home 路径替换为~user的形式。 stringByExpandingTildeInPath
——将路径中的代字符(~或~user)解析成当前用户的 home 目录或 指定用户的 home 目录。stringByStandardizingPath
——解析路径中的~
,..
,.
和符号连接,返回解析后生成的 标准路径。stringByResolvingSymlinksInPath
——解析路径中的符号链接,返回解析后的路径
NSPathUtilities.h包含的获取系统相关属性的函数
NSUserName()
:返回当前用户名;NSFullUserName( )
:返回当前用户的完整用户名;NSHomeDirectory()
:返回当前用户的home目录NSHomeDirectoryForUser(NSString * __nullable userName)
:返回指定用户的 Home 目录;NSOpenStepRootDirectory()
:返回系统的临时目录。
示例代码:
#import <Foundation/Foundation.h>int main(int argc , char * argv[]){ @autoreleasepool{ NSLog(@"当前用户名为:%@" , NSUserName()); NSLog(@"当前用户的完整用户名为:%@" , NSFullUserName()); NSLog(@"当前用户的home目录为:%@" , NSHomeDirectory()); NSLog(@"root用户的home目录为:%@" , NSHomeDirectoryForUser(@"root")); NSLog(@"系统临时目录为:%@" , NSTemporaryDirectory()); NSString* path = @"~root"; // 将~root解析成root用户的home目录 NSLog(@"解析~root的结果:%@" , [path stringByExpandingTildeInPath]); NSString* path2 = @"/Users/yeeku/publish"; // 将会输出~/publish NSLog(@"替换成~的形式:%@" , [path2 stringByAbbreviatingWithTildeInPath]); NSArray* array = [path2 pathComponents]; // 遍历该路径中包含的各路径组件 for(NSString* item in array) { NSLog(@"%@" , item); } // 在path2路径后追加一个路径 NSString* path3 = [path2 stringByAppendingPathComponent:@"abc.m"]; NSLog(@"path3为:%@" , path3); // 获取路径的最后部分 NSString* last = [path3 lastPathComponent]; NSLog(@"path3的最后一个路径组件为:%@" , last); // 获取路径的最后部分的扩展名 NSLog(@"path3的最后一个路径的扩展名为:%@" , [path3 pathExtension]); }}
运行结果:
2015-10-07 09:21:26.157 1005[1176:33760] 当前用户名为:2015-10-07 09:21:26.159 1005[1176:33760] 当前用户的完整用户名为:2015-10-07 09:21:26.160 1005[1176:33760] 当前用户的home目录为:/Users/Halbert/Library/Developer/CoreSimulator/Devices/8360160E-C79D-4240-8D67-1EF554BC23BF/data/Containers/Data/Application/626CC5FD-4D91-44A6-A6C4-1A8EBE6BC6B72015-10-07 09:21:26.160 1005[1176:33760] root用户的home目录为:/Users/Halbert/Library/Developer/CoreSimulator/Devices/8360160E-C79D-4240-8D67-1EF554BC23BF/data/Containers/Data/Application/626CC5FD-4D91-44A6-A6C4-1A8EBE6BC6B72015-10-07 09:21:26.160 1005[1176:33760] 系统临时目录为:/Users/Halbert/Library/Developer/CoreSimulator/Devices/8360160E-C79D-4240-8D67-1EF554BC23BF/data/Containers/Data/Application/626CC5FD-4D91-44A6-A6C4-1A8EBE6BC6B7/tmp/2015-10-07 09:21:26.161 1005[1176:33760] 解析~root的结果:/Users/Halbert/Library/Developer/CoreSimulator/Devices/8360160E-C79D-4240-8D67-1EF554BC23BF/data/Containers/Data/Application/626CC5FD-4D91-44A6-A6C4-1A8EBE6BC6B72015-10-07 09:21:26.162 1005[1176:33760] 替换成~的形式:/Users/yeeku/publish2015-10-07 09:21:26.227 1005[1176:33760] /2015-10-07 09:21:26.227 1005[1176:33760] Users2015-10-07 09:21:26.227 1005[1176:33760] yeeku2015-10-07 09:21:26.228 1005[1176:33760] publish2015-10-07 09:21:26.228 1005[1176:33760] path3为:/Users/yeeku/publish/abc.m2015-10-07 09:21:26.228 1005[1176:33760] path3的最后一个路径组件为:abc.m2015-10-07 09:21:26.229 1005[1176:33760] path3的最后一个路径的扩展名为:m
ProcessInfo获取进程信息
当一个程序运行起来后就变成了一个进程,NSProcessInfo对象可用于获取该进程的相关信息。此外,还可以获取该进程所在系统的主机名,操作系统名,操作系统版本等信息。
ProcessInfo对象的创建很简单,程序调用ProcessInfo的 processInfo类方法即可获取该进程对应的ProcessInfo对象,然后就可以调用ProcessInfo的方法获取该进程,及进程所在系统的信息:
arguments
:返回运行该程序所传入的参数组成的 NSArray 对象;environment
:返回系统内所有环境变量名和值组成的 NSDictionary 对象。hostName
:返回该进程所在系统的主机名;processName
:返回进程名;processIdentifier
:返回进程的标识符;globallyUniqueString
:返回一个全局的,唯一的字符串;operatingSystem
:返回操作系统;operatingSystemName
:返回操作系统名;operatingSystemVersionString
:返回系统版本号的字符串;operatingSystemVersion
:返回系统版本processorCount
:返回处理器数量;activeProcessorCount
:返回激活状态的处理器数量;physicalMemory
:返回系统的物理内存;systemUptime
:系统已运行的时间;
示例代码:
#import <Foundation/Foundation.h>int main(int argc , char * argv[]){ @autoreleasepool{ // 获取当前进程对应的ProcessInfo对象 NSProcessInfo* proInfo = [NSProcessInfo processInfo]; // 获取运行该程序所指定的参数 NSArray* arr = [proInfo arguments]; NSLog(@"运行程序的参数为:%@" , arr); NSLog(@"进程标识符为:%d" ,[proInfo processIdentifier]); NSLog(@"进程的进程名为:%@" ,[proInfo processName]); NSLog(@"进程所在系统的主机名为:%@" , [proInfo hostName]); NSLog(@"进程所在系统的操作系统为:%ld" , [proInfo operatingSystem]); NSLog(@"进程所在系统的操作系统名为:%@" , [proInfo operatingSystemName]); NSLog(@"进程所在系统的操作系统版本字符串为:%@", [proInfo operatingSystemVersionString]); NSLog(@"进程所在系统的物理内存为:%lld", [proInfo physicalMemory]); NSLog(@"进程所在系统的处理器数量为:%ld" , [proInfo processorCount]); NSLog(@"进程所在系统的激活的处理器数量为:%ld" , [proInfo activeProcessorCount]); NSLog(@"进程所在系统的运行时间为:%f", [proInfo systemUptime]); }}
运行结果:
2015-10-07 10:52:03.245 1005[1410:68262] 运行程序的参数为:( "/Users/Halbert/Library/Developer/CoreSimulator/Devices/8360160E-C79D-4240-8D67-1EF554BC23BF/data/Containers/Bundle/Application/DACF3DBF-0669-4BFB-99B4-250916EB7AAE/1005.app/1005")2015-10-07 10:52:03.247 1005[1410:68262] 进程标识符为:14102015-10-07 10:52:03.247 1005[1410:68262] 进程的进程名为:10052015-10-07 10:52:03.261 1005[1410:68262] 进程所在系统的主机名为:hanxinyuandemacbook-air.local2015-10-07 10:52:03.261 1005[1410:68262] 进程所在系统的操作系统为:52015-10-07 10:52:03.262 1005[1410:68262] 进程所在系统的操作系统名为:NSMACHOperatingSystem2015-10-07 10:52:03.294 1005[1410:68262] 进程所在系统的操作系统版本字符串为:Version 9.0 (Build 13A340)2015-10-07 10:52:03.294 1005[1410:68262] 进程所在系统的物理内存为:42949672962015-10-07 10:52:03.295 1005[1410:68262] 进程所在系统的处理器数量为:42015-10-07 10:52:03.295 1005[1410:68262] 进程所在系统的激活的处理器数量为:42015-10-07 10:52:03.296 1005[1410:68262] 进程所在系统的运行时间为:11344.116244
特别指出的是,上面的一些方法已经被 IOS8以后的 新系统弃用,上图:
问题解惑:argv 与NSProcessInfo获取参数的区别?
argv获取的程序参数是 C风格的字符串,而通过NSProcessInfo 获取的参数则是 NSString 对象组成的NSArray数组。——这样就可以直接面向 objective-c 的 API编程。
0 0
- 【IOS 开发学习总结-OC-35】★文件 I/O——NSPathUtilities.h管理路径+NSProcessInfo获取进程信息
- 【IOS 开发学习总结-OC-34】★★文件 I/O——NSFileManager 管理文件和目录
- 【IOS 开发学习总结-OC-36】★文件 I/O——NSFileHandle&NSURL&NSBundle
- 【IOS 开发学习总结-OC-37】★文件 I/O——对象归档
- 用NSPathUtilities.h管理路径
- 【IOS 开发学习总结-OC-33】★★objective-c之文件 I/O概述+NSData/NSMutableData
- 26 使用NSPathUtilities.h管理路径
- IOS-Frameworks-Foundation-NSPathUtilities.h 文件夹路径
- 【IOS 开发学习总结-OC-24】★★★objective-c——内存管理
- NSProcessInfo获取进程信息,UIDevice获取设信息
- iOS进程类:NSProcessInfo
- ios开发之NSPathUtilities
- iOS开发:获取文件路径总结
- Linux学习总结(四)——标准I/O与文件I/O
- Objective-C路径操作,路径工具类NSPathUtilities.h,ios路径操作
- ios开发之NSProcessInfo
- 【IOS 开发学习总结-OC-32】★OC之foundation 框架——谓词(NSPredicate)
- NSProcessInfo-当前进程信息类
- android GridView android:stretchMode="columnWidth"
- Ubuntu 搭建ftp服务器
- 黑马程序员——OC语言加强---@property中的copy关键字
- JAVA基础--db22_java反射机制&正则
- 黑马程序员——Java基础---网络编程
- 【IOS 开发学习总结-OC-35】★文件 I/O——NSPathUtilities.h管理路径+NSProcessInfo获取进程信息
- 洛谷1538 迎春舞会之数字舞蹈
- 初识PageRank算法
- Linux启动过程详解
- 带你玩转六大设计原则
- malloc与free和new与delete有什么区别
- 【HTTP】Web服务器工作流程小结--从建立连接到日志记录
- 谈谈:关于敏捷规划的微信对话
- 一元线性回归