mac平台获取app路径

原本只是为了在mac平台简单地调用fopen、fwrite等函数,发现fopen需要包含绝对路径,才能正常使用;否则,即使调试时可以创建文件,直接调用app执行时,文件不会被创建。

为此,需要获取执行文件的绝对路径。用到函数_NSGetExecutablePath。这个函数获取的路径是app包里的执行文件的路径,直接在后面加上‘/../../../../‘到app路径也是不行的,大概是访问权限的问题,会导致fopen失败。

所以先将获取的路径处理一下,得到app路径,再在fopen中调用,经证实是OK的。

代码如下:

// get app path.
#include <mach-o/dyld.h>
char g_path[MAXPATHLEN+1];
- (void)getAppPath
{
    uint32_t size = sizeof(g_path);
    if (_NSGetExecutablePath(g_path, &size) == 0)
        printf("executable path is %s\n", g_path);
    else
        printf("buffer too small; need size %u\n", size);

    // /Users/blade/proj//Output/MacOS/bin/TestTool.app/Contents/MacOS/TestTool

    if(strlen(g_path))
    {
        int end,count = 0;
        for(int i = strlen(g_path) - 1; i>0; i--)
        {
            if(g_path[i] == '/')
            {
                count++;
            }
            if(count == 4)
            {
                end = i;
                break;
            }
        }
        if(end > 0)
        {
            memset(g_path+end,0,strlen(g_path)-end);
        }
    }
}
时间: 2024-08-25 00:07:55

mac平台获取app路径的相关文章

[转]获取app的内部储存路径

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下.所有内部存储中保存的文件在用户卸载应用的时候会被删除. 一. files1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象.2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInput

QML Image获取资源路径的细节

ML是门相当新的UI描述语言,因此在文档上总难免有疏漏之处,如果因此产生了bug,则就需要花费大量的时间去排查. 在最近笔者使用QML的过程中,在Image获取资源路径的细节上就出现了这样的情况. Image 是qml中一个非常普通的元素,通常使用方法如下: Image {  width: 120; height: 120  fillMode: Image.TileHorizontally  smooth: true  source: "qtlogo.png"  } 其中,source

[转载]Unity3D在各平台上的路径

原文地址 http://blog.csdn.net/u010377179/article/details/52922727 关于Unity3D在各平台上的路径问题,网上有好多的资料,如下是比较好的参考资料: 1.http://www.manew.com/thread-23491-1-1.html 2.http://www.xuanyusong.com/archives/2656 这里我不详细解释和路径的用法,只把各个路径对应的位置和访问方式总结一下. 1.Resources路径 Resource

【转】物业管理与移动互联网科技|微信公众平台,物业app,物业O2O

[导语]当下,物业管理行业正在接受新科技浪潮的冲击和洗礼,业界企业纷纷探索物业服务的新发展模式.云服务.微社区.微信公众平台.app等,这些本来陌生的词汇在物业管理行业变得耳熟能详.在借助科技手段拓展多种经营,提升竞争力.增加创富能力.开展信息化建设和管理的同时,部分物业服务企业的发展模式和理念又提升了一大步,现代科技推动物业管理行业发展正在成为现实. 第一部分:移动互联网改变传统物业管理 <ignore_js_op>  从6000斤香梨看社区O2O——记长城物业盛世家园社区香梨团购活动 普而

在外围获取APP的重要信息

网络抓包,这类的术语,大家应该听过不少了. 不管怎么表达,本质都是分析网络交互时的数据包,以取得想要的信息. 我们有可能会遇到这样的场景:"对方这个App是怎么实现的?它发送的网络请求有没有带上时间限制?"."获取这个资源的网络地址是什么,要不要带token?我能够模拟发送吗?" ... 在研究某个应用程序时,分析网络数据包,往往就是第一个手段. 本文解决一个问题:通过抓包分析出重要信息. 小白:何为抓包? 小程:就是截获网络上收发的数据包. 小白:网络上那么多数据

微信开放平台手机APP支付

                PHP对接APP微信支付 微信开放平台手机APP支付总结 1. 微信开放平台手机APP支付总结 支付功能链接: https://pay.weixin.qq.com/wiki/doc/api/index.html APP支付功能文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3 Demo下载地址: https://pay.weixin.qq.com/wiki/doc/api/jsapi

微领地小蜜平台定制APP系统

微领地小蜜平台定制APP系统何经理[188-2646-6502 微/电].微领地小蜜系统的核心宗旨是开放.便捷.实用.互联网的企业和企业的互联网本来就是一对共同体,它们的不同之处在于实施的主体不同.交易的平台不同和提供的产品服务不同. 对于国外互联网企业的背景和宏观发展环境分析,欧美等互联网企业发展较为成熟的发达国家值得我们去学习和借鉴.在对于国外互联网企业的分析中,主要分析美国.欧盟.英国和日本等互联网企业发展较为成熟的国家.国外互联网企业宏观资料来源:<中国人民银行:中国互联网企业稳定报告>

Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;

    首先要说,最近真的是太忙了,好久没写博客了,今天正好有空,就写一下最近在写游戏中的一些发现: 话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是可以进行增量更新和即时编译等,节省了很多时间:好了废话不多说了,进入正题: 这里我是以Cocos2d-x-2.2.2 为例<其实,写着文章时候Cocos2d-x-3.2 都封版了>: 今天我就说一下怎么用Cocos2d-x3.2中的cocos-console 去 批量 加密lua脚本-变成luac文件 ,js文件变成jsc加密文

iOS开发中获取文件路径的方法介绍

1.首先要知道什么是沙盒? 沙盒就是每一个应用程序安装完毕之后在本地生成的一个文件夹,就叫做沙盒文件.下面是沙盒的一个路径展示: 可以看到: iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么?下面就详细的一一道来: 分别是:documents,tmp,app,Library. 而获取APP的沙盒的函数是:(NSHomeDirectory(), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在Prefe