IOS相对路径

高德地图开放平台Web服务API调用全解析:从申请Key到获取POI数据的完整流程 本文详细解析高德地图开放平台Web服务API的合规使用流程,从开发者账号注册、Key类型选择到POI数据采集方案构建。重点介绍文本搜索接口的三种查询模式及高级筛选技巧,提供配额管理与性能优化方案,并分享商业应用场景实战经验,帮助开发者合法高效获取POI数据。 阅读详情
转载链接:http://blog.youkuaiyun.com/niitlcj/article/details/7437709
在写iOS应用的时候遇到一个问题,使用[NSData dataWithContentOfFile:@"foo"]的时候,总是无法读取正确的文件内容。而使用[NSData dataWithContentOfFile:[[NSBundle mainBundle] pathForResource:@”foo” ofType:@”"]的时候就可以。

经过Google以后知道。当使用相对路径的时候,其实他相对的当前目录并不是程序运行的目录,而是“/”。只有使用[NSBundle mainBundle]来生成的路径才是文件真正的路径。

在此记录一下:在以后的开发中不直接使用任何相对路径,而是使用经过计算以后的绝对路径。


NSBundle束,是一种特定的文件类型,其中的内容遵循特定的结构。

NSBundle的一个主要作用是 获取Resources文件夹中的资源。

使用主束来获取需要的资源文件:

NSBundle *bundle = [NSBundle mainBundle];

NSString *plistPath = [bundle pathForResource:@"statedictionary" ofType:@"plist"];

或者简写成一行:

NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

 

 

例如:
<span class="pln">    </span><span class="com" style="color: rgb(136, 0, 0);">// get an image from the main app bundle</span>
<span class="pln">    </span><span class="typ" style="color: rgb(102, 0, 102);">NSBundle</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln">appBundle </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="typ" style="color: rgb(102, 0, 102);">NSBundle</span><span class="pln"> mainBundle</span><span class="pun" style="color: rgb(102, 102, 0);">];</span>
<span class="pln">    </span><span class="typ" style="color: rgb(102, 0, 102);">NSString</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln">path </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="pln">appBundle pathForResource</span><span class="pun" style="color: rgb(102, 102, 0);">:@</span><span class="str" style="color: rgb(0, 136, 0);">"myImage"</span><span class="pln"> ofType</span><span class="pun" style="color: rgb(102, 102, 0);">:@</span><span class="str" style="color: rgb(0, 136, 0);">"png"</span><span class="pun" style="color: rgb(102, 102, 0);">];</span>
<span class="pln">    </span><span class="typ" style="color: rgb(102, 0, 102);">UIImage</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln">image </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">[[</span><span class="typ" style="color: rgb(102, 0, 102);">UIImage</span><span class="pln"> alloc</span><span class="pun" style="color: rgb(102, 102, 0);">]</span><span class="pln">initWithContentsOfFile</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">path</span><span class="pun" style="color: rgb(102, 102, 0);">];</span>
<span style="color: rgb(102, 102, 0);">经过测试,创建工程自带的plist文件是无法获取其路径的。</span>
iOS程序有固定的文件访问限制,只能在自己的沙盒内。

  UIImage *img=[UIImage imageNamed:@"cellicon.png"];


  这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!

  接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题。比如

  NSFileHandle *fileHandle=[NSFileHandlefileHandleForReadingAtPath:newPath];


  newPath为一个字符串路径,这里的路径你却不能像上面那样

  NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:@"test.txt"];


  这样系统是找不到文件的,因为这里需要的是文件的绝对路径,而@“test.txt”完全是无效的。

  这个时候就需要NSBundle的帮忙了,这个类专门用来负责路径转化等等功能那。大家都知道ios项目虽然在xcode下可以创建文件夹结构,但是实际上它是没有文件结构概念的,所以此时假如要加载放在项目目录下的test.txt文件,完整的代码应该是这样


方法1:

  NSString *newPath=[NSStringstringWithFormat:@"%@%@%@",[[NSBundlemainBundle]resourcePath],@"/",path];

  NSLog(@"url=%@",newPath);

  NSFileHandle *fileHandle=[NSFileHandlefileHandleForReadingAtPath: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=[NSFileHandlefileHandleForReadingAtPath:newPath];

[[NSBundle mainBundle] pathForResource:@"test" ofType:@"jat"];前面的就不再介绍了,pathForResource方法有两个参数,前面这个为文件名,后面那个ofType就是文件类型,也就是文件后缀。这里把文件名和后缀分开了,如果这是你得到的是一个完整的文件名如:@“test.txt”,那么你得自己想办法把文件名和后缀分开了。

要特别说明,此处的文件后缀是不需要“.”的,如果写成@“.jat”是错误的,加载文件会失败。

告别‘耀斑’降落:手把手教你用PX4+激光测距仪实现固定翼精准自动着陆 本文详细介绍了如何利用PX4飞控与激光测距仪实现固定翼无人机的精准自动着陆,解决传统气压计在低空环境下的测量误差问题。通过硬件选型、安装要点、PX4参数配置及实战调校,帮助开发者实现厘米级高度感知,优化降落曲线,提升着陆稳定性与安全性。 阅读详情

相关推荐

PSI5协议技术文档与驱动开发指南

• 供电与数据复用:ECU通过双绞线为传感器提供稳压(典型值5V-11V),同时检测线路电流变化实现数据传输。• 同步信号:ECU发送3.5V电压脉冲(上升沿触发传感器响应),用于时序同步。• 安全气囊:PSI5-P模式实现多碰撞传感器同步采样(响应时间<10ms)• CRC-3(3位):ASIL-B以上功能安全要求(如动力总成传感器)• 奇偶校验(1位):适用于低安全等级场景(如PSI5-P10P模式)• 典型应用:PSI5-P(并行总线)、PSI5-U(通用总线)

u012733413的博客 2867

dataWithContentsOfFile 这个方法加载本地资源文件时 需确保文件存在 否则崩溃

NSError *error = nil;     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"BDNovelChannel" ofType:@"txt"];     NSData *data = [NSData dataWithContentsOfFile:filePath options:NSData

沸腾的泪水的专栏 9113

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 620

14、文件管理

1、应用程序沙盒的基本概念 •iOS中的沙盒(sandbox)机制 iOS应用程序只能对自己创建的文件系统读取文件,这个“独立”“封闭”“安全”的空间,我们称为沙盒。它一般存放着你的程序包文件(可执行文件)、图片、 声音、视频、plist、sqlite数据库以及其他文件。 •每个应用程序都有自己的独立的存储空间(沙盒) •一般来说应用程序间是不可以相互访问 •模

牛崽的博客 390

jaka+realsense+aruco+手眼标定(python)

第二次重建了项目的手眼标定部分……有很多第一次记录遗漏的地方,在此补充。

drivenzyw的博客 2122

ADS负载牵引仿真避坑指南:从零开始搞定Loadpull模板设置

本文是一份针对ADS负载牵引仿真的深度避坑指南,详细解析了Loadpull模板从初始化配置到结果解读的全过程。文章重点阐述了如何根据设计目标灵活设置扫描圆、采样点等关键参数,以解决仿真不收敛、结果不完整等常见问题,并指导读者在功率与效率之间做出理性权衡,最终提取出用于匹配网络设计的最优负载阻抗。

weixin_29234423的博客 597

iOS :获取沙盒里的图片为空,通过[NSData dataWithContentsOfFile:newstr]和initWithContentsOfFile原因

有时我们会将图片进行存储,储存到沙盒路径下面,等我们用到的时候再去读取。读取的时候一般有两个方法NSData *imageData = [NSData dataWithContentsOfFile:@"路径"];UIImage* image = [[UIImage alloc] initWithData:imageData];还有一个NSString *aPath3=[NSString st...

WangQingLei0307的博客 6343

EDKII实战:手把手调试PciHostBridge.c,看UEFI如何分配你的PCIe设备资源(IO/Memory空间)

本文深入解析EDKII中PciHostBridge.c模块的工作原理,详细指导如何调试PCIe设备资源分配(IO/Memory空间)。通过实战案例展示UEFI环境下Root Bridge初始化、地址空间转换及协议安装等核心流程,提供常见问题排查方法与性能优化建议,帮助开发者解决PCIe设备兼容性问题。

weixin_29201933的博客 208

IOS路径沙盒文件管理

iOS路径沙盒文件管理,有需要的朋友可以参考下。 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一般存放着程序包文件(可执行文件)、图片、音频、视频、plist文件、sqlite数据库以及其他文件。 每个应用程序都有自己的独立的存储空间(沙盒) 一般来说应用程序之间是不可以互相访问 ...

weixin_33836223的博客 178

蓝桥杯 stm32 PWM 测量频率

参考 数据手册:比赛 的板子 上面有两个信号发生器,如下图。通过 扭动 可变电阻 (R40, R39), 来实现 PWM 频率的改变。PA15PB4。PA15,PB4分别使用TIM2_CH1TIM3_CH1来对频率进行捕获。

wuyiyu_的博客 2931

001、专栏导论:为什么我们需要MLIR与算子中间表示

五年前,大家还在争论“TVM还是XLA”。现在回头看,TVM的Relay IR和XLA的HLO都是特定领域的IR,它们解决了各自的问题,但缺乏通用性。MLIR的出现,本质上是因为硬件异构化已经到了一个临界点——CPU、GPU、NPU、DSP、FPGA,每个硬件都有自己的指令集和内存层次,没有一个统一的IR能同时高效表达所有硬件的计算模式。MLIR的“方言+渐进式lowering”模式,恰好提供了这种灵活性。你可以为每个硬件定制一套方言,然后共享公共的lowering路径。

Jack010169的博客 488

iOS将大文件映射到内存

在《中国区GPS偏移纠正(适用于Google地图)》一文中曾读取一个78M的大数据文件,一开始采用了NSData的dataWithContentsOfFile:方法。不少人反馈说如果直接使用,将会耗尽iOS的内存。其实这个是可以改善的。 NSData还有一个API: 1 + (id)dataWithContentsOfFile:(NSStrin

zoutian007的专栏 2335

2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

针对YOLO26模型改进痛点,本专栏整理200+实战验证方法,覆盖卷积层、注意力机制等核心模块。 每种方法含原理、性能分析、改进路径及实操流程,代码可直接运行,快速提升模型效果,性价比超高。

魔改工程师的博客 1万+

iOS的相对路径和绝对路径

iOS程序有固定的文件访问限制,只能在自己的沙盒内。   UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!   接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的

huifeidexin_1的专栏 4万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS开发中不要使用相对路径

iOS开发中不要使用相对路径 在写iOS应用的时候遇到一个问题,使用[NSData dataWithContentOfFile:@"foo"]的时候,总是无法读取正确的文件内容。而使用[NSData dataWithContentOfFile:[[NSBundle mainBundle] pathForResource:@”foo” ofType:@”"]的时候就可以。 经过Goo

浓浓的巧克力 5186

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

终极ios学习笔记1.0.1-ios相对路径与绝对路径的转化NSBundle

iOS程序有固定的文件访问限制,只能在自己的沙盒内。   UIImage *img=[UIImage imageNamed:@"cellicon.png"];   这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!   接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对

zi2xuan的专栏 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS开发之Xcode 相对路径与绝对路径

iOS开发之 相对路径与绝对路径  https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html 在iOS的工程中,尤其是在使用CocoaPods前,经常会把某...

jimmychan的博客 1649

iOS开发:相对路径与相对工程名

绝对路径与相对路径: 一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大。 如果你把工程发给别人,别人就要修改这个绝对路径,这时候绝对路径的缺点立马出现。 使用相对路径: 所以在修改User Header Search Paths这个选项的时候使用 "$(SRCROOT)/当前工程名字/需要包含头文件

gongwutianya的博客 2879

iOS Xcode下的绝对路径和相对路径

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 一般我们在xcode中添加头文件,或者添加pch文件时候,这时候就需要用到相对路径和绝对路径这两个概念了。 首先我们需要简单了解一下什么是绝对路径和相对路径。相对路径实际就是调用当前目录下面的文件,绝对路径跟相对路径一样调用文件,但绝对路径是一个固定地址。 简单举个例子介绍一下,例如我在桌面建一个aa的文件夹,里面一

石虎 3404

ios相对路径与绝对路径的转化NSBundle

iOS程序有固定的文件访问限制,只能在自己的沙盒内。   UIImage *img=[UIImage imageNamed:@"cellicon.png"];   这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧!   接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路

yujian0xiayutian的专栏 564

iOS中,文件相对路径、绝对路径切换

最新更新了APP之后,发现了一个问题,上传附件的时候一直报错 No such file or directory。 但是,文件的的确确就在Documents目录下好好躺着。奇怪奇怪。 仔细对比之后,发现,生成附件的时候,绝对地址是: /var/mobile/Containers/Data/Application/44C5E71D-B418-4FD3-A82A-45404C19465F/Do

8835
上一篇: NSSearchPathForDirectoriesInDomains用法
下一篇: 简明Vim操作手册
studyinroom
博客等级 码龄12年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值