NSFileManager (文件管理器 读、写操作)
来源:互联网 发布:linux 还原系统时间 编辑:程序博客网 时间:2024/05/20 05:09
- Documents
Apple官方建议将程序中建立的或程序浏览的文件数据都保存在Documents目录里,iTunes备份数据时或恢复数据时,会备份或恢复此目录;
- Library
主要存储的是默认的设置或其它的状态信息。包含以下两个文件夹: - Caches
存储缓存文件,存储应用程序再次启动所需的,itunes不会备份该目录; - Preferences
存储应用程序偏好设置文件,一般不修改这里存放的文件;
- Caches
- tmp
提供的是一个存储临时文件的地方。iPhone一旦重启tmp目录下的内容就会被清空。
- // 获取沙盒主目录路径
- NSString *homeDir = NSHomeDirectory();
- // 获取Documents目录路径
- NSArray *paths = NSSearchPathForDirectori
esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *docDir = [paths objectAtIndex:0];
- // 获取Caches目录路径
- NSArray *paths = NSSearchPathForDirectori
esInDomains(NSCachesDirectory, NSUserDomainMask, YES); - NSString *cachesDir = [paths objectAtIndex:0];
- // 获取tmp目录路径
- NSString *tmpDir = NSTemporaryDirectory();
- // 获取当前程序包中一个图片资源(apple.png)路径
- NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];
- UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
例子:
NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
//下面是对该文件进行制定路径的保存
[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirector
//取得一个目录下得所有文件名
NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
//读取某个文件
NSData *data = [fm contentsAtPath:[self dataFilePath]];
//或者
NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}
IOS管理文件和目录
1、常见的NSFileManager文件方法
-(NSData *)contentsAtPath:path //从一个文件读取数据
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr //向一个文件写入数据
-(BOOL)removeItemAtPath:path error:err //删除一个文件
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或者移动一个文件(to不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err //复制文件(to不能是已存在的)
-(BOOL)contentsEqualAtPath:path andPath:path2 //比较两个文件的内容
-(BOOL)fileExistAtPath:path //测试文件是否存在
-(BOOL)isReadableFileAtPath:path //测试文件是否存在,并且是否能执行读操作
-(BOOL)isWriteableFileAtPath:path //测试文件是否存在,并且是否能执行写操作
-(NSDictionary *)attributesOfItemAtPath:path error:err //获取文件的属性
-(BOOL)setAttributesOfItemAtPat
2.使用目录
-(NSString *)currentDirectoryPath //获取当前目录
-(BOOL)changeCurrentDirectoryPa
-(BOOL)copyItemAtPath:from toPath:to error:err //复制目录结构(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirector
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag //测试文件是不是目录(flag中储存结果YES/NO)
-(NSArray *)contentsOfDirectoryAtPat
-(NSDirectoryEnumerator *)enumeratorAtPath:path //枚举目录的内容
-(BOOL)removeItemAtPath:path error:err //删除空目录
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或移动一个目录(to不能是已存在的)
3、常用路径工具方法
+(NSString *)pathWithComponens:components //根据components中的元素构造有效路径
-(NSArray *)pathComponents //析构路径,获得组成此路径的各个部分
-(NSString *)lastPathComponent //提取路径的最后一个组成部分
-(NSString *)pathExtension //从路径的最后一个组成部分中提取其扩展名
-(NSString *)stringByAppendingPathCom
-(NSString *)stringByAppendingPathExt
-(NSString *)stringByDeletingLastPath
-(NSString *)stringByDeletingPathExte
-(NSString *)stringByExpandingTileInP
-(NSString *)stringByresolvingSymlink
-(NSString *)stringByStandardizingPat
4、常用的路径工具函数
NSString* NSUserName(void) //返回当前用户的登录名
NSString* NSFullUserName(void) //返回当前用户的完整用户名
NSString* NSHomeDirectory(void) //返回当前用户主目录的路径
NSString* NSHomeDirectoryForUser(NSString* user) //返回用户user的主目录
NSString* NSTemporaryDirectory(void) //返回可用于创建临时文件的路径目录
5、常用的IOS目录
Documents(NSDocumentDirectory) //用于写入应用相关数据文件的目录,在ios中写入这里的文件能够与iTunes共享并访问,存储在这里的文件会自动备份到云端
Library/Caches(NSCachesDirectory) //用于写入应用支持文件的目录,保存应用程序再次启动需要的信息。iTunes不会对这个目录的内容进行备份
tmp(use NSTemporaryDirectory()) //这个目录用于存放临时文件,只程序终止时需要移除这些文件,当应用程序不再需要这些临时文件时,应该将其从这个目录中删除
Library/Preferences //这个目录包含应用程序的偏好设置文件,使用 NSUserDefault类进行偏好设置文件的创建、读取和修改
(以上转自网络)
//文件管理器初始化 NSFileManager* fileManager = [NSFileManager defaultManager]; NSError *erro; //自定义文件目录 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0]; //~/Library/Documentation NSString *newPath = [path stringByAppendingPathComponent:@"newPath"]; NSString *toPath = [path stringByAppendingPathComponent:@"seconPath"]; //~/Documents (iTunes备份目录)// NSString *newPath2 = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"newPath"]; //创建新的文件目录,拼接到沙盒目录下 BOOL bo = [[NSFileManager defaultManager] createDirectoryAtPath:newPath withIntermediateDirectories:YES attributes:nil error:&erro]; // BOOL bo2 = [[NSFileManager defaultManager] createDirectoryAtPath:toPath withIntermediateDirectories:YES attributes:nil error:&erro]; //如果成功创建目录,则写入文件 UIImage *img = [UIImage imageNamed:@"001"]; if (bo) { BOOL b = [UIImagePNGRepresentation(img) writeToFile:[newPath stringByAppendingPathComponent:@"save.png"] atomically:YES]; } //移动目录 //以重命名方式 移动文件夹,前提是新的路径没有相同名称的文件目录 [fileManager moveItemAtPath:newPath toPath:toPath error:&erro]; //复制A路径文件 到 B文件夹// [fileManager copyItemAtPath:[newPath stringByAppendingPathComponent:@"save.png"] toPath:[toPath stringByAppendingPathComponent:@"save.png"] error:&erro]; //移动文件// [fileManager moveItemAtPath:[newPath stringByAppendingPathComponent:@"save.png"] toPath:[toPath stringByAppendingPathComponent:@"save.png"] error:&erro]; //- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0); //获取指定目录下的所有文件路径,返回path数组 NSString* pathStr = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"imageBundle"]; NSLog(@"%@",pathStr); NSString* pathStr2 = [[[NSBundle mainBundle]bundlePath]stringByAppendingPathComponent:@"imageBundle"]; //- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0); //获取目录下所有文件名 ~/save.png ~ NSArray* owefilePath = [fileManager contentsOfDirectoryAtPath:newPath error:&erro]; for (NSString *fileName in owefilePath) { //完整文件路径 NSLog(@"filePath==%@\r\n",[newPath stringByAppendingPathComponent:fileName]); UIImage *oweImg = [UIImage imageWithContentsOfFile:[newPath stringByAppendingPathComponent:fileName]]; } //- (nullable NSArray<NSString *> *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0); //沙盒目录下的所有子目录,包括自定义的新建文件夹 newPath、 newPath/save.png 图片路径 NSArray* subfilePath = [fileManager subpathsOfDirectoryAtPath:path error:&erro];
- NSFileManager (文件管理器 读、写操作)
- NSFileManager 文件管理器
- OC 文件管理器NSFileManager
- NSFileManager文件管理器
- NSFileManager文件管理器
- NSFileManager文件管理器, 沙盒SandBox
- NSFileManager 文件相关操作
- iOS文件操作 NSFileManager
- 文件操作之NSFileManager
- 文件操作(NSFileManager)
- iOS NSFileManager文件操作
- 文件操作(NSFileManager)
- 文件操作(NSFileManager)
- 文件操作(NSFileManager)
- NSFileManager文件操作
- 文件操作NSFileManager
- 文件操作(NSFileManager)
- NSFileManager文件操作
- 再谈strncpy函数--值得一看的好文章
- JVM工作原理学习笔记
- 简易音乐播放器
- shell函数【参数传递及输入输出】&内置函数
- Leetcode 5 - Longest Palindromic Substring
- NSFileManager (文件管理器 读、写操作)
- Android中通知的提示音、震动和LED灯效果小例子
- Android版添加phonegap--百度云插件教程
- Android 热更新实现原理及代码分析
- shell的内置命令
- <context:property-placeholder/>作用
- 动态生成带logo的二维码
- Objective-c语言_延展
- video classroom number