ios 路径 目录 学习知识总结
2012-04-04 19:08
369 查看
// 获取程序Documents目录路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// 获取程序app文件所在目录路径
NSHomeDirectory();
// 获取程序tmp目录路径
NSTemporaryDirectory();
// 获取程序应用包路径
[[NSBundle mainBundle] resourcePath];
或
[[NSBundle mainBundle] pathForResource: @"info" ofType: @"txt"];
复制代码
另外对于文件一些主要操作主要是通过NSFileManage 来完成,可以通过 [NSFileManger defaultManger] 得到它得实例。
如:创建目录、重命名文件、获取目录下的文件名、删除文件、删除目录等。
其他:
在使用的时候我准备向NSHomeDirectory()获取到的目录中写一个 文件但是失败了。
后来写到Documents目录中了,不知道是iOS的限制还是什么,文件不能写到NSHomeDirectory()目录下。
//此部分转载自 http://www.cnblogs.com/kaixuan/archive/2011/05/31/2064796.html kuanxuan
做软件,游戏啥得,免不了很多资源,图片啊,音乐啊,自定义文件啊,很多!
是不是有时候会遇到怪问题,资源文件明明在项目下面,路径也是对得,也转化为相对路径了,看了又看就是不知道为什么,加载得文件对象总是空得。
首先,得到你得NSBundle资源路径
[[NSBundle mainBundle]resourcePath]
这个方法可以得到,不管你用什么方法把他复制出来,然后用Finder得“前往文件夹”功能,到达那个指定路径,如果编译运行正常,你应该看到有一个叫“xxx.app”得文件
你猜对了,这就是我们要找得东西,点右键->显示包内容,
iOS程序有固定的文件访问限制,只能在自己的沙盒内。
UIImage *img=[UIImage imageNamed:@"cellicon.png"];
这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!
接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题。比如
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
newPath为一个字符串路径,这里的路径你却不能像上面那样
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:@"test.txt"];
这样系统是找不到文件的,因为这里需要的是文件的绝对路径,而@“test.txt”完全是无效的。
这个时候就需要NSBundle的帮忙了,这个类专门用来负责路径转化等等功能那。大家都知道ios项目虽然在xcode下可以创建文件夹结构,但是实际上它是没有文件结构概念的,所以此时假如要加载放在项目目录下的test.txt文件,完整的代码应该是这样
方法1:
NSString *newPath=[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];
NSLog(@"url=%@",newPath);
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
此处[NSBundle mainBundle]是获得NSBundle的一个单例对象,次单例对象 已经设置了默认的resourcePath,也就是你的app打包后的路径,[NSBundle mainBundle]resourcePath]就是获得这个完整的打包后的app路径,但你的test.txt文件并不在这个目录,而是在app内部,这时就需要拼接路径字符串,[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];这么简单的字符串拼接,我就不多说了,
控制台输出app路径resourcePath:
/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app
控制台输出拼接后完整文件绝对路径:
/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app/test.jat
方法2:
NSString *newPath=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
[[NSBundle mainBundle] pathForResource:@"test" ofType:@"jat"];前面的就不再介绍了,pathForResource方法有两个参数,前面这个为文件名,后面那个ofType就是文件类型,也就是文件后缀。这里把文件名和后缀分开了,如果这是你得到的是一个完整的文件名如:@“test.txt”,那么你得自己想办法把文件名和后缀分开了。
要特别说明,此处的文件后缀是不需要“.”的,如果写成@“.jat”是错误的,加载文件会失败。
以上部分转自 http://blog.csdn.net/zi2xuan/article/details/7319210 zi2xuan
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// 获取程序app文件所在目录路径
NSHomeDirectory();
// 获取程序tmp目录路径
NSTemporaryDirectory();
// 获取程序应用包路径
[[NSBundle mainBundle] resourcePath];
或
[[NSBundle mainBundle] pathForResource: @"info" ofType: @"txt"];
复制代码
另外对于文件一些主要操作主要是通过NSFileManage 来完成,可以通过 [NSFileManger defaultManger] 得到它得实例。
如:创建目录、重命名文件、获取目录下的文件名、删除文件、删除目录等。
其他:
在使用的时候我准备向NSHomeDirectory()获取到的目录中写一个 文件但是失败了。
后来写到Documents目录中了,不知道是iOS的限制还是什么,文件不能写到NSHomeDirectory()目录下。
//此部分转载自 http://www.cnblogs.com/kaixuan/archive/2011/05/31/2064796.html kuanxuan
终极ios学习笔记1.0.2-ios无法加载项目内资源文件
做软件,游戏啥得,免不了很多资源,图片啊,音乐啊,自定义文件啊,很多!是不是有时候会遇到怪问题,资源文件明明在项目下面,路径也是对得,也转化为相对路径了,看了又看就是不知道为什么,加载得文件对象总是空得。
首先,得到你得NSBundle资源路径
[[NSBundle mainBundle]resourcePath]
这个方法可以得到,不管你用什么方法把他复制出来,然后用Finder得“前往文件夹”功能,到达那个指定路径,如果编译运行正常,你应该看到有一个叫“xxx.app”得文件
你猜对了,这就是我们要找得东西,点右键->显示包内容,
ios相对路径与绝对路径的转化NSBundle
iOS程序有固定的文件访问限制,只能在自己的沙盒内。UIImage *img=[UIImage imageNamed:@"cellicon.png"];
这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!
接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题。比如
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
newPath为一个字符串路径,这里的路径你却不能像上面那样
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:@"test.txt"];
这样系统是找不到文件的,因为这里需要的是文件的绝对路径,而@“test.txt”完全是无效的。
这个时候就需要NSBundle的帮忙了,这个类专门用来负责路径转化等等功能那。大家都知道ios项目虽然在xcode下可以创建文件夹结构,但是实际上它是没有文件结构概念的,所以此时假如要加载放在项目目录下的test.txt文件,完整的代码应该是这样
方法1:
NSString *newPath=[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];
NSLog(@"url=%@",newPath);
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
此处[NSBundle mainBundle]是获得NSBundle的一个单例对象,次单例对象 已经设置了默认的resourcePath,也就是你的app打包后的路径,[NSBundle mainBundle]resourcePath]就是获得这个完整的打包后的app路径,但你的test.txt文件并不在这个目录,而是在app内部,这时就需要拼接路径字符串,[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",path];这么简单的字符串拼接,我就不多说了,
控制台输出app路径resourcePath:
/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app
控制台输出拼接后完整文件绝对路径:
/Users/zouzouyanghong/Library/Application Support/iPhone Simulator/5.0/Applications/76116A6A-572D-43AE-AE78-17D7A88DCAFC/JFitnessProduct.app/test.jat
方法2:
NSString *newPath=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:newPath];
[[NSBundle mainBundle] pathForResource:@"test" ofType:@"jat"];前面的就不再介绍了,pathForResource方法有两个参数,前面这个为文件名,后面那个ofType就是文件类型,也就是文件后缀。这里把文件名和后缀分开了,如果这是你得到的是一个完整的文件名如:@“test.txt”,那么你得自己想办法把文件名和后缀分开了。
要特别说明,此处的文件后缀是不需要“.”的,如果写成@“.jat”是错误的,加载文件会失败。
以上部分转自 http://blog.csdn.net/zi2xuan/article/details/7319210 zi2xuan
相关文章推荐
- ios 学习之你画我话绘图五 构造路径基础知识
- 【Objective-C】01-学习iOS开发前期知识积累之C语言知识大总结
- 记 Linux 学习知识总结 -- 寒江老师视频(四) - 目录
- 【IOS 开发学习总结-OC-34】★★文件 I/O——NSFileManager 管理文件和目录
- OC基础知识总结 分类: ios学习 OC 2015-06-26 17:58 58人阅读 评论(0) 收藏
- iOS学习笔记74-IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别附代码
- 【IOS 开发学习总结-OC-65】Quartz 2D绘图(4-2)——绘制文本+设置阴影+使用路径
- iOS学习(三十)IOS中获取各种文件的目录路径的方法
- cs193p斯坦福视频学习总结——iOS基础知识
- 【IOS 开发学习总结-OC-60】ipad应用开发的一些知识
- 【iOS学习笔记 16-2-22】iOS多线程知识总结
- 【Linux基础学习之四】文件系统的基础知识总结(主要目录结构、文件类型、mount、硬连接)
- Linux学习笔记之权限与命令之间的关系(重要)及文件与目录知识总结
- iOS学习总结之多线程编程NSOperation & NSOperationQueue
- IOS中获取各个文件的目录路径的方法和NSFileManager类
- 【IOS 开发学习总结-OC-49】★★ios开发之UI控件——UIStepper与UIWebView
- 黑马程序员之ios学习总结——11 OC语言的内存管理1
- OpenGL ES学习总结一:基础知识简介
- 个人学习Linux知识总结第1/4页
- 大话存储-学习总结6-系统IO路径及优化