ios目录文件操作

1,385 阅读3分钟

获取路径

获取AppName.app 目录路径:

   NSString *path = [[NSBundle mainBundle] bundlePath];

获取Documents目录路径的方法:

    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

Library/Caches目录路径方法:

    NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;

Library/Application Support目录路径方法:

   [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,   NSUserDomainMask, YES) objectAtIndex:0]

获取临时文件的路径目录

    NSString *temPath = NSTemporaryDirectory();

获取沙盒主目录路径

    NSString *homePath = NSHomeDirectory();

返回当前用户的登录名

NSString* NSUserName(void)

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

NSString* NSFullUserName(void)

返回用户user的主目录

NSString* NSHomeDirectoryForUser(NSString* user)

NSFileManager文件操作

根据url创建目录(文件夹)

-(BOOL)createDirectoryAtURL:url withIntermediateDirectories:createIntermediates attributes:attributes error:error

根据url创建文件

-(NSData *)contentsAtPath:path

向一个文件写入数据

-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr

删除一个文件

-(BOOL)removeItemAtPath:path error:err

重命名或者移动一个文件(to不能是已存在的)

-(BOOL)moveItemAtPath:from toPath:to error:err

复制文件(to不能是已存在的)

-(BOOL)copyItemAtPath:from toPath:to error:err

比较两个文件的内容

-(BOOL)contentsEqualAtPath:path andPath:path2

测试文件是否存在

-(BOOL)fileExistAtPath:path

测试文件是否存在,并且是否能执行读操作 

-(BOOL)isReadableFileAtPath:path 

测试文件是否存在,并且是否能执行写操作

-(BOOL)isWriteableFileAtPath:path  

获取文件的属性  

-(NSDictionary *)attributesOfItemAtPath:path error:err

更改文件的属性

-(BOOL)setAttributesOfItemAtPath:attr error:err

路径(path)相关方法(NSString分类)

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

+(NSString *)pathWithComponens:components

析构路径,获得组成此路径的各个部分

-(NSArray *)pathComponents

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

-(NSString *)lastPathComponent

从路径的最后一个组成部分中提取其扩展名

-(NSString *)pathExtension

将path添加到现有路径的末尾

-(NSString *)stringByAppendingPathComponent:path

将指定的扩展名添加到路径的最后一个组成部分

-(NSString *)stringByAppendingPathExtension:ext 

删除路径的最后一个组成部分

-(NSString *)stringByDeletingLastPathComponent

从文件的最后一部分删除扩展名

-(NSString *)stringByDeletingPathExtension

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

-(NSString *)stringByExpandingTileInPath

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

-(NSString *)stringByresolvingSymlinksInPath

通过尝试解析~、..(父目录符号)、.(当前目录符号)和符号链接来标准化路径

-(NSString *)stringByStandardizingPath 

NSFileHandle

获取文件句柄(以写入为例)

NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 

以写入的方式获取文件句柄,分别是path和url的方式打开

+ (nullable instancetype)fileHandleForWritingAtPath:(NSString *)path
+ (nullable instancetype)fileHandleForWritingToURL:(NSURL *)url error:(NSError **)error

以读取的方式获取文件句柄,分别是path和url的方式打开

+ (nullable instancetype)fileHandleForReadingAtPath:(NSString *)path 打开一个文件准备读取
+ (nullable instancetype)fileHandleForReadingFromURL:(NSURL *)url error:(NSError **)error

以更新的方式获取文件句柄,分别是path和url的方式打开

+ (nullable instancetype)fileHandleForUpdatingAtPath:(NSString *)path;
+ (nullable instancetype)fileHandleForUpdatingURL:(NSURL *)url error:(NSError **)error

获取文件大小

FileSize = [[attributes objectForKey:NSFileSize] intValue]

以追加的形式写入data数据文件到末尾

- (BOOL)writeData:(NSData *)data error:(out NSError **)error

读取数据到文件的末尾

- (nullable NSData *)readDataToEndOfFileAndReturnError:(out NSError **)error

读取文件到指定长度

- (nullable NSData *)readDataUpToLength:(NSUInteger)length error:(out NSError **)error

获取游标的偏移量

- (BOOL)getOffset:(out unsigned long long *)offsetInFile error:(out NSError **)error

将游标放到指定长度偏移,用于插入数据

- (BOOL)seekToOffset:(unsigned long long)offset error:(out NSError **)error

截取数据到指定偏移量

- (BOOL)truncateAtOffset:(unsigned long long)offset error:(out NSError **)error

关闭文件句柄

- (BOOL)closeAndReturnError:(out NSError **)error