iOS文件操作
来源:互联网 发布:数据新闻手册中文版 编辑:程序博客网 时间:2024/06/08 14:51
iOS为每个应用提供了独立的文件空间,一个应用只能直接访问为本应用分配的目录,不可以访问其他的目录,每个应用自己独自的访问空间被称为该应用的沙箱(sandBox):
1:Bundle container(这里通常存放的是应用创建时所携带的资源,即APP的程序文件)
2:Data container(用户使用应用时产生的资源和数据,即运行时产生的不同文件,Doucuments,Libary,Temp)
3:iCloud container(数据云同步)
一:iOS访问文件目录
系统函数:NSArray<NSString*>*NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde)
- (void)showPathForDirectoriesInDomains{ NSLog(@"%@",[NSStringstringWithFormat:@"Applications:%@\nUsers:%@\nDocuments:%@\nLibary:%@\nLibary/Caches:%@\nLibary/Application Support:%@\n", NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask,YES), NSSearchPathForDirectoriesInDomains(NSUserDirectory, NSUserDomainMask,YES), NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES), NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask,YES), NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES), NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask,YES)]);}
函数说明:
NSSearchPathForDirectoriesInDomains()函数是一个C语言的函数,可以查找各种目录。
第一个常量NSApplicationDirectory(Applications目录)、NSUserDirectory(Users目录)、NSDocumentDirectory(Documents路径)等,表明正在查找的目录路径。
第二个常量NSUserDomainMask(应用的沙盒)表明我们限制的搜索范围。
二:NSFileManager操作
1:路径查询#pragma -mark - 路径查询- (void)searchBtnClick{ NSLog(@"%@",[NSString stringWithFormat:@"浅搜索:%@",[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0].path error:nil]]);}
2:创建文件
#pragma -mark - 创建文件- (void)createfileBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *fileUrl = [baseUrl URLByAppendingPathComponent:@"nancy.txt" isDirectory:true]; NSLog(@"fileUrl = %@",fileUrl); if (![[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { NSData *data = [@"创建文件时写入的数据" dataUsingEncoding:NSUTF8StringEncoding]; [[NSFileManager defaultManager] createFileAtPath:fileUrl.path contents:data attributes:nil]; NSLog(@"nancy.txt 创建成功"); }else{ NSLog(@"nancy.txt 已经存在"); }}
3:创建文件夹
#pragma -mark - 创建文件夹- (void)createFolderBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *folderUrl = [baseUrl URLByAppendingPathComponent:@"nancy" isDirectory:true]; NSLog(@"folderUrl = %@",folderUrl); if (![[NSFileManager defaultManager] fileExistsAtPath:folderUrl.path]) { [[NSFileManager defaultManager] createDirectoryAtURL:folderUrl withIntermediateDirectories:YES attributes:nil error:nil]; NSLog(@"nancy 创建成功"); }else{ NSLog(@"nancy 已经存在"); }}
4:删除文件
#pragma -mark - 删除文件- (void)removeFileBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *fileUrl = [baseUrl URLByAppendingPathComponent:@"nancy.txt" isDirectory:true]; if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { [[NSFileManager defaultManager] removeItemAtPath:fileUrl.path error:nil]; NSLog(@"nancy.txt文件删除成功"); }else{ NSLog(@"nancy.txt文件不存在,先创建文件"); } }
5:删除文件夹
#pragma -mark - 删除文件夹- (void)removeFolderBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *folderUrl = [baseUrl URLByAppendingPathComponent:@"nancy" isDirectory:true]; if ([[NSFileManager defaultManager] fileExistsAtPath:folderUrl.path]) { [[NSFileManager defaultManager] removeItemAtURL:folderUrl error:nil]; NSLog(@"nancy文件夹删除成功"); }else{ NSLog(@"nancy文件夹不存在"); }
三:NSFileHandel操作
1:文件数据读取
#pragma -mark - 文件数据读取- (void)readBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *fileUrl = [baseUrl URLByAppendingPathComponent:@"nancy.txt" isDirectory:true]; if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { NSFileHandle *fileHandel = [NSFileHandle fileHandleForReadingAtPath:fileUrl.path]; //设置距离文章开头的偏移量 [fileHandel seekToFileOffset:0]; NSData *data = [fileHandel readDataToEndOfFile]; NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; self.fileHandelLabel.text = string; }else{ self.fileHandelLabel.text = @""; NSLog(@"nancy.txt文件不存在,先创建文件"); }}
2:文件数据写入
#pragma -mark - 文件数据写入- (void)writeBtnClick{ NSURL *baseUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; NSURL *fileUrl = [baseUrl URLByAppendingPathComponent:@"nancy.txt" isDirectory:true]; if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { NSString *string = @"添加一些文字到文件的末尾"; self.fileHandelLabel.text = string; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; NSFileHandle *writeHandel = [NSFileHandle fileHandleForWritingToURL:fileUrl error:nil]; [writeHandel seekToEndOfFile]; [writeHandel writeData:data]; }else{ self.fileHandelLabel.text = @""; NSLog(@"nancy.txt文件不存在,先创建文件"]; }}
四:Bundle操作
iOS中提到的bundle,它存放的是应用可执行文件及相关资源文件。这个位置的所有文件在系统运行时只具有可读或者可执行的权限。
bundle中主要有以下几种类型的文件:
1:info plist(必须有的文件,用来配置应用的基本参数信息,包括版本号,指向可执行文件名,包名)
2:可执行文件(每个应用程序必须有一个可执行文件)
3:资源文件(可执行以外的文件,常用的如图像,图标,音频文件,视图文件,配置文件等)";
1:获取NSBundel的资源
#pragma -mark - NSBundle的资源- (void)bundleResourceBtnClick{ NSURL *pathUrl = [[NSBundle mainBundle] URLForResource:@"AppIcon29x29@2x" withExtension:@"png"]; NSString *pathStr = [[NSBundle mainBundle] pathForResource:@"AppIcon60x60@3x" ofType:@"png"]; NSLog(@"%@",[NSString stringWithFormat:@"pathUrl = %@ \n pathStr = %@",pathUrl,pathStr]);}
2:获取Bundel的信息
#pragma -mark - Bundle的信息- (void)bundleInfoBtnClick{ NSLog(@"infoPlist: %@",[[NSBundle mainBundle] infoDictionary]); NSBundle *mainBundle = [NSBundle mainBundle]; NSLog(@"%@",[NSString stringWithFormat:@"BundleID(应用程序唯一标识): %@\n BundleVerson(应用编译版本号): %@ \n BundleName(应用的Bundel名): %@ \n BundleExecutable(应用可执行程序的名称): %@ \n MinimumOSVersion(最低系统): %@",mainBundle.bundleIdentifier,[mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"],[mainBundle objectForInfoDictionaryKey:@"CFBundleName"],[mainBundle objectForInfoDictionaryKey:@"CFBundleExecutable"],[mainBundle objectForInfoDictionaryKey:@"MinimumOSVersion"]]);}
- iOS 文件相关操作
- iOS中的文件操作
- iOS开发 文件操作
- ios 文件操作实例
- ios常用文件操作
- ios文件的操作
- IOS常用文件操作
- iOS文件操作
- IOS文件操作
- ios 操作plist文件
- (转载)ios文件操作
- iOS文件操作 NSFileManager
- ios 文件/目录操作
- ios文件读写操作
- ios 文件操作
- IOS 文件操作
- IOS文件常用操作
- IOS文件操作
- 设置 UItextField placeholder颜色和字体大小
- CentOS 安装配置 Fail2Ban
- Android ImageView去掉周围的白边
- swift 基础
- app版本更新的四种实现方式
- iOS文件操作
- 潜心悟道,升级人生
- java反射原理
- 二叉树的镜像
- 如何实现app侧滑菜单,,,SlidingMenu的使用
- jvm-jvm参数设置
- Rod Dot Hint
- apache日志文件处理成sqlite数据库
- HTML select 展示已选择属性的方法