转自:http://blog.csdn.net/zi2xuan/article/details/7319210
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”是错误的,加载文件会失败。
话外题:有必要介绍一下打开指定路径得方法,先打开Finder就是这个东西,上面菜单栏会出现Finder得相关菜单,选择“前往”->再选择这个在弹出得窗口中输入得到得resourcePath路径,你就能看到自己得app了,你说怎么得到?自己想去。
分享到:
相关推荐
`MGRelativeKit`库正是为了解决这一问题而诞生的,它提供了一种简单易用的API,使得开发者可以将绝对布局轻松转换为相对布局,而且在整个过程中无需使用Apple的Auto Layout系统。 `MGRelativeKit`的核心理念是简化...
此外,考虑到描述中提到的“比例的移动”,这可能意味着进度条不仅展示绝对的数值,还可能包含一种相对的比例比较。例如,用户可能需要看到当前处理的个数相对于总个数的比例,或者比较不同任务的完成情况。这种情况...
2. **绝对定位**:通过设置父元素和子元素的相对与绝对定位,我们可以让滑块相对于背景按钮进行移动。这使得滑块能够随着开关状态的变化而移动。 3. **转换(Transforms)**:CSS3的`transform`属性可以用来改变...
15. 写一个函数,根据两文件的绝对路径算出相对路径。 这个问题涉及到文件路径的处理,可以使用`NSString`的`stringByResolvingSymlinksInPath`和`stringByStandardizingPath`方法,以及`NSString`的路径操作方法来...
总之,iOS中处理时间字符串的关键在于合理使用`NSDate`和`NSDateFormatter`,通过设置不同的`dateFormat`来实现字符串与日期对象之间的相互转换。通过创建Category或扩展,我们可以封装常用的方法,提高代码的可读性...
最后,文档内容中还涉及了网络地址转换(Network Address Translation,NAT)和端口地址转换(Port Address Translation,PAT),这些技术可以使私有网络的用户通过一个公共IP地址访问互联网。然而,由于文档内容的...
FileKit 提供了强大的路径处理功能,可以方便地生成、解析和比较文件路径,支持绝对路径和相对路径的转换,以及路径组件的获取和设置。 ### 3. 文件属性 通过 FileKit,开发者可以轻松获取或设置文件的基本属性,...
通过调用`fullPathFromRelativePath`方法,可以将相对路径转换为绝对路径,确保在不同平台上正确识别资源位置。 #### 2. 从zip中读取文件数据 ```cpp unsigned long fSize = 0; unsigned char* buff = NULL; buff ...
照片能够自己新增相簿与导出汇入图片,操作方式比较直觉,相对其他的音频铃声等等也是如此,就像档案总管一般管理档案即可,虽然功能上并没【iTools】与【iFunBox】那样丰富,但是也绝对足够使用啰! 苹果同步软件...
它们接受的参数可以是绝对位置(相对于文件开始的位置),也可以是相对当前位置的偏移量。`tellg()`和`tellp()`函数分别返回当前读取和写入指针的位置。 在完成文件操作后,记得调用`close()`函数关闭文件,以释放...
此外,文件路径的转换也是一项技术要点,这涉及到如何将Web开发中的相对路径转换为Native API所需的绝对路径。 Native.js技术的使用,不仅提升了开发效率,而且使得Web开发者可以无需深入学习和掌握复杂的原生开发...
然而,在IOS设备上,屏幕坐标系默认原点在左上角,与OpenGL坐标系正好相反,因此在Cocos2d-x中处理触摸事件时,需要将触摸点的位置转换为OpenGL坐标。 OpenGL坐标系,又称为绘图坐标系,是游戏开发中常见的坐标系之...
"mac text→path"这个标题可能指的是如何将文本字符串转换为文件路径,或者如何在文本编辑器中处理与文件路径相关的操作。在这个场景下,我们将深入探讨Mac系统中如何处理文本和路径,以及如何在命令行或图形用户...
15. 混合引用:混合引用是指公式中部分单元格地址是绝对的,部分是相对的。在给出的选项中,A$1+B$1是混合引用。 16. Excel函数:在Excel中,`=SUM("6",16,1)`会将字符串"6"转换为数值6并加上16和1,结果为23。 ...
### 输入输出文件:掌握C++中的格式控制与流操作 #### 概述 在C++编程语言中,输入输出操作是非常基础且重要的功能之一。为了更灵活地控制数据的输入输出,C++提供了多种方式来实现对数据格式的精细化管理。本文...
如果设计图中20px的字体需要转换为`rem`,先确定页面默认字体大小(通常为16px),即1rem=16px。所以20px字体等于`1.25rem`。 3. **APP适配策略** - **原生APP**:原生Android和iOS应用通常根据各自的屏幕尺寸和...
在VC++编程环境中,获取文件路径是一项常见的任务,特别是在处理文件操作时。...在实际项目中,根据具体需求,你可能还需要考虑错误处理、路径的规范化、相对路径与绝对路径的转换等更复杂的情况。
这个阶段涉及流体布局、相对定位、绝对定位等各种布局模式。 5. **绘画与合成** 布局完成后,WebKit将渲染树转换为一系列图层,并进行绘画。这些图层可以进行硬件加速,提高性能。最后,合成器将各个图层组合成一...
包括CPU寄存器功能、寻址方式的作用、总线结构的重要性、计算机系统可靠性分析、软件产品可靠度的影响因素、模块耦合类型、风险概念、项目估算方法、软件项目的活动图分析、软件著作权中的翻译权、网络通信基础知识...