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)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 * NSUserName(void) | 返回当前用户的登录名 |
NSString * NSFullUserName(void) | 返回当前用户的完整用户名 |
NSString * NSHomeDirectory(void) | 返回当前用户主目录的路径 |
NSString * NSHomeDirectoryForUser(NSString *user) | 返回用户user的主目录 |
NSString * NSTemporaryDirectory(void) | 返回可用于创建临时文件的路径目录 |
常用路径工具方法
+(NSString *) pathWithComponents:components | 根据components中元素构造有效路径 |
-(NSArray *)pathComponents | 析构路径,获取路径的各个部分 |
-(NSString *)lastPathComponent | 提取路径的最后一个组成部分 |
-(NSString *)pathExtension | 路径扩展名 |
-(NSString *)stringByAppendingPathComponent:path | 将path添加到现有路径末尾 |
-(NSString *)stringByAppendingPathExtension:ext | 将拓展名添加的路径最后一个组成部分 |
-(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]; 路径的每个部分