`
wiseideal
  • 浏览: 449709 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

IOS中相对地址与绝对地址的转换

 
阅读更多

转自: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了,你说怎么得到?自己想去。

 

分享到:
评论

相关推荐

    swift-MGRelativeKit简单易用的API将绝对转换为相对布局无需自动布局

    `MGRelativeKit`库正是为了解决这一问题而诞生的,它提供了一种简单易用的API,使得开发者可以将绝对布局轻松转换为相对布局,而且在整个过程中无需使用Apple的Auto Layout系统。 `MGRelativeKit`的核心理念是简化...

    ios-涉及到具体的个数的进度条.zip

    此外,考虑到描述中提到的“比例的移动”,这可能意味着进度条不仅展示绝对的数值,还可能包含一种相对的比例比较。例如,用户可能需要看到当前处理的个数相对于总个数的比例,或者比较不同任务的完成情况。这种情况...

    css3 iphone ios 开关按钮

    2. **绝对定位**:通过设置父元素和子元素的相对与绝对定位,我们可以让滑块相对于背景按钮进行移动。这使得滑块能够随着开关状态的变化而移动。 3. **转换(Transforms)**:CSS3的`transform`属性可以用来改变...

    iOS程序员面试真题(附答案解析)(3).doc

    15. 写一个函数,根据两文件的绝对路径算出相对路径。 这个问题涉及到文件路径的处理,可以使用`NSString`的`stringByResolvingSymlinksInPath`和`stringByStandardizingPath`方法,以及`NSString`的路径操作方法来...

    iOS时间字符串格式化输出技巧详解

    总之,iOS中处理时间字符串的关键在于合理使用`NSDate`和`NSDateFormatter`,通过设置不同的`dateFormat`来实现字符串与日期对象之间的相互转换。通过创建Category或扩展,我们可以封装常用的方法,提高代码的可读性...

    CISCO路由器如何实现用户对网络的定时访问.pdf

    最后,文档内容中还涉及了网络地址转换(Network Address Translation,NAT)和端口地址转换(Port Address Translation,PAT),这些技术可以使私有网络的用户通过一个公共IP地址访问互联网。然而,由于文档内容的...

    swift-FileKit一个简单轻量级的开源文件管理工具

    FileKit 提供了强大的路径处理功能,可以方便地生成、解析和比较文件路径,支持绝对路径和相对路径的转换,以及路径组件的获取和设置。 ### 3. 文件属性 通过 FileKit,开发者可以轻松获取或设置文件的基本属性,...

    cocos2d-x 读取zip的代码

    通过调用`fullPathFromRelativePath`方法,可以将相对路径转换为绝对路径,确保在不同平台上正确识别资源位置。 #### 2. 从zip中读取文件数据 ```cpp unsigned long fSize = 0; unsigned char* buff = NULL; buff ...

    苹果同步软件(syncios) v6.2.3 中文版.zip

    照片能够自己新增相簿与导出汇入图片,操作方式比较直觉,相对其他的音频铃声等等也是如此,就像档案总管一般管理档案即可,虽然功能上并没【iTools】与【iFunBox】那样丰富,但是也绝对足够使用啰! 苹果同步软件...

    二进制文件读写[收集].pdf

    它们接受的参数可以是绝对位置(相对于文件开始的位置),也可以是相对当前位置的偏移量。`tellg()`和`tellp()`函数分别返回当前读取和写入指针的位置。 在完成文件操作后,记得调用`close()`函数关闭文件,以释放...

    HTML5+应用开发

    此外,文件路径的转换也是一项技术要点,这涉及到如何将Web开发中的相对路径转换为Native API所需的绝对路径。 Native.js技术的使用,不仅提升了开发效率,而且使得Web开发者可以无需深入学习和掌握复杂的原生开发...

    Cocos2d-x开发游戏的坐标系知识介绍

    然而,在IOS设备上,屏幕坐标系默认原点在左上角,与OpenGL坐标系正好相反,因此在Cocos2d-x中处理触摸事件时,需要将触摸点的位置转换为OpenGL坐标。 OpenGL坐标系,又称为绘图坐标系,是游戏开发中常见的坐标系之...

    mac text=》path的例子

    "mac text→path"这个标题可能指的是如何将文本字符串转换为文件路径,或者如何在文本编辑器中处理与文件路径相关的操作。在这个场景下,我们将深入探讨Mac系统中如何处理文本和路径,以及如何在命令行或图形用户...

    信息处理技术员考试试题(十).docx

    15. 混合引用:混合引用是指公式中部分单元格地址是绝对的,部分是相对的。在给出的选项中,A$1+B$1是混合引用。 16. Excel函数:在Excel中,`=SUM("6",16,1)`会将字符串"6"转换为数值6并加上16和1,结果为23。 ...

    输入输出文件

    ### 输入输出文件:掌握C++中的格式控制与流操作 #### 概述 在C++编程语言中,输入输出操作是非常基础且重要的功能之一。为了更灵活地控制数据的输入输出,C++提供了多种方式来实现对数据格式的精细化管理。本文...

    自己整合的css面试题

    如果设计图中20px的字体需要转换为`rem`,先确定页面默认字体大小(通常为16px),即1rem=16px。所以20px字体等于`1.25rem`。 3. **APP适配策略** - **原生APP**:原生Android和iOS应用通常根据各自的屏幕尺寸和...

    获得文件路径的VC代码

    在VC++编程环境中,获取文件路径是一项常见的任务,特别是在处理文件操作时。...在实际项目中,根据具体需求,你可能还需要考虑错误处理、路径的规范化、相对路径与绝对路径的转换等更复杂的情况。

    WebKit技术内幕朱永盛.pdf

    这个阶段涉及流体布局、相对定位、绝对定位等各种布局模式。 5. **绘画与合成** 布局完成后,WebKit将渲染树转换为一系列图层,并进行绘画。这些图层可以进行硬件加速,提高性能。最后,合成器将各个图层组合成一...

    网络工程师真题2011上半年

    包括CPU寄存器功能、寻址方式的作用、总线结构的重要性、计算机系统可靠性分析、软件产品可靠度的影响因素、模块耦合类型、风险概念、项目估算方法、软件项目的活动图分析、软件著作权中的翻译权、网络通信基础知识...

Global site tag (gtag.js) - Google Analytics