NSFileManager,NSPathUtilities,NSProcessInfo和NSFileHandle

NSFileManager:

管理文件和目录使用NSFileManager,文件或目录使用文件的路径名为唯一标识。

完整路径也称为绝对路径,以斜线(/)开始。

特殊的代字符(~)作为用户主目录的缩写。

当前目录为".";

父目录为“..”;

创建方法:

+ (NSFileManager *)defaultManager;

一些重要常用的方法:

目录方法:

- (NSString *)currentDirectoryPath;获取当前目录

- (BOOL)changeCurrentDirectoryPath:(NSString *)path;更改当前目录

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory;测试文件是不是目录(isDirectory中储存结果YES/NO)

- (BOOL)copyItemAtPath:from  toPath:to  error:err;复制目录结构(to不能是已经存在的)

- (BOOL)createDirectoryAtPath:path  withIntermediateDirectories:(BOOL)flag  attributes:attr;创建一个新目录

- (NSArray *)contentsOfDirectoryAtPath:path  error:err;列出目录内容//若其中一个文件是目录,则不递归枚举它的内容

- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path;枚举目录的内容//若其中一个文件是目录,则递归枚举它的内容,对枚举对象发送skipDescendants可以动态阻止递归过程

- (BOOL)removeItemAtPath:path  error:err;删除目录
- (BOOL)removeItemAtPath:from  toPath:to  error:err;重命名或者移动一个目录(to不能是已存在的)


文件方法:

- (BOOL)fileExistsAtPath:(NSString *)path;测试文件是否存在

- (BOOL)isReadableFileAtPath:(NSString *)path;测试文件是否存在并可读

- (BOOL)isWritableFileAtPath:(NSString *)path;测试文件是否存在并可写

- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2;比较两文件内容

- (NSData *)contentsAtPath:path;从一个文件中读取数据

- (BOOL)createFileAtPath:path  contents:(NSData *)data  attributes:attr;向一个文件中写入数据//文件的属性字典attr若为nil;则该文件被设置为默认权限

- (BOOL)removeItemAtPath:from  toPath:to  error:err;删除一个文件//err被设置为NULL,则采取默认行为

- (BOOL)moveItemAtPath:path  toPath:to  error:err;重命名或者移动一个文件(to不能是已存在的)//若两个路径引用同一个目录中的文件,则是重命名

- (BOOL)copyItemAtPath:path  toPath:to  error:err;复制文件(to不能是已存在的)

- (NSDictionary *)attributesOfItemAtPath:path  error:err;获取文件属性

- (BOOL)setAttributesOfItemAtPath:path  error:err;更改文件属性




NSProcessInfo : 

NSProcessInfo类中的argments方法返回一个字符串对象数组。

数组的第一个元素是进程名称,其余的元素是在命令行中输入的参数。

这个类主要用来记录当前进程的信息。

其实,我们都知道,unix下的进程入口都是main函数。

这也就是为什么NSProcessInfo会记录命令行中的输入参数的原因。

命令行中的输入参数都是通过main函数的入参传入的。



@interface NSProcessInfo :NSObject {

    @private 

    NSDictionary *environment;

    NSArray  *arguments;

    NSString  *hostName;    

    NSString  *name;

    NSInteger  automaticTerminationOptOutCounter;

}


+ (NSProcessInfo *)processInfo; 返回当前进程信息

- (NSDictionary *)environment;返回字典以描述当前的环境变量及其值

- (NSArray *)arguments;以string对象数字形式返还当前进程参数

- (NSString *)hostName;返回主机系统的名称

- (NSString *)processName;返回当前执行的进程名称

- (int)processIdentifier;返回进程标识符

- (void)setProcessName:(NSString *)newName;将当前进程名称设置为name

- (NSString *)globallyUniqueString;每次调用此方法,返回不同的单值字符串,可用于生成单值临时文件名

- (NSUInteger)operatingSystem;返回表示操作系统的数字

- (NSString *)operatingSystemName;返回操作系统的名称

- (NSString *)operatingSystemVersionString;返回操作系统的当前版本


NSFileHandle:

基本文件操作:NSFileHandle,可用于标准输入、标准输出、标准错误和控设备。

应该注意NSFileHandle类并没有提供创建文件的功能。

创建文件须使用FileManager的方法来创建。

另外,Unix系统下,应注意,打开文件进行写入并不会截断文件,需要自己完成截断。



@interface NSFileHandle : NSObject

+(id)fileHandleForReadingAtPath:path;打开一个文件准备读取

+(id)fileHandleForWritingAtPath:path;打开一个文件准备写入 (读取和写入)

+(id)fileHandleForUpdatingAtPath:path;打开一个文件准备更新

- (NSData *)availableData;从设备或者通道返回可用的数据

- (NSData *)readDataToEndOfFile;读取其余的数据直到文件的末尾(最多UINT_MAX字节)

- (NSData *)readDataOfLength:(NSUInteger)length;从文件读取指定字节的内容

- (void)writeData:(NSData *)data;将data写入文件

- (unsignedlonglong)offsetInFile;获取当前文件的偏移量

- (unsignedlonglong)seekToEndOfFile;将当前文件的偏移量定位到文件的尾

- (void)seekToFileOffset:(unsignedlonglong)offset;设置当前文件的偏移量

- (void)truncateFileAtOffset:(unsignedlonglong)offset;将文件的长度设置为ooffset字节

- (void)closeFile;




NSPathUtilities

使用路径用NSPathUtilities.h

components是一个NSArray对象,它包含路径中每一部分的字符串对象,

Path是一个字符串对象,它指定文件的路径;ext是路径扩展名的字符串对象。如@“mp3”


为了保存数据直到下一次运行程序仍能够使用,可以使用Documents目录。

每个iOS应用都有自己的Documents目录供数据写入。



常用路径工具函数

NSString * NSUserNamevoid)

返回当前用户的登录名

NSString * NSFullUserNamevoid)

返回当前用户的完整用户名

NSString * NSHomeDirectoryvoid)

返回当前用户主目录的路径

NSString * NSHomeDirectoryForUserNSString *user)

返回用户user的主目录

NSString * NSTemporaryDirectoryvoid)

返回可用于创建临时文件的路径目录

常用路径工具方法

+(NSString *) pathWithComponentscomponents

根据components中元素构造有效路径

-NSArray *pathComponents

析构路径,获取路径的各个部分

-NSString *lastPathComponent

提取路径的最后一个组成部分

-NSString *pathExtension 

路径扩展名

-NSString *stringByAppendingPathComponentpath

path添加到现有路径末尾

-NSString *stringByAppendingPathExtensionext

将拓展名添加的路径最后一个组成部分

-NSString *stringByDeletingPathComponent

删除路径的最后一个部分

-NSString *stringByDeletingPathExtension

删除路径的最后一个部分的扩展名

-NSString *stringByExpandingTildeInPath

将路径中的代字符扩展成用户主目录(~)或指定用户主目录(~user

-NSString *stringByResolvingSymlinksInPath

尝试解析路径中的符号链接

-NSString *stringByStandardizingPath

通过尝试解析~...、和符号链接来标准化路径

使用路径NSPathUtilities.h

tempdir = NSTemporaryDirectory();  临时文件的目录名

path = [fm currentDirectoryPath];

[path lastPathComponent];  从路径中提取最后一个文件名

fullpath = [path stringByAppendingPathComponent:fname]; 将文件名附加到路劲的末尾

extenson = [fullpath pathExtension];  路径名的文件扩展名

homedir = NSHomeDirectory(); 用户的主目录

component = [homedir pathComponents];  路径的每个部分



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值