转自:http://blog.csdn.net/wm_jiangnanan/article/details/8669369
最近遇到了个问题,就是在程序中写文件。我用的是cocos2d-x,它使用的是CCUserDefault来读写本地的一个XML文件,原生的iphone程序,是读写的一个plist文件,它们之间的相同之处就是都写在了程序的documents目录下,这是由于ios系统的沙盒机制,每个程序只能操作沙盒内部的数据,可以读取代码中的数据,但是不允许写入数据。所以我们在保存一些数据的,或者想在程序中写一些文件的情况下,我们可以考虑在他的documents目录下写文件。那么这个文件在哪里呢?
我们看到工程中只有一个info.plist文件,这是程序的配置文件,我们想要找的文件并不在这里,而是在实际的程序中,废话不多说,首先我们新建一个cocos2d-x的空工程,然后在bool HelloWorld::init()的return方法之前加入这样一句话
CCLog("the xml path is %s",CCFileUtils::sharedFileUtils()->getWriteablePath().c_str());
这个函数getWriteablePath我们看看它的内部实现:
std::string CCFileUtils::getWriteablePath()
{
// save to document folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
std::string strRet = [documentsDirectory UTF8String];
strRet.append("/");
return strRet;
}
它其实是调用的OC的代码,获取了程序的根路径的路径,然后获取documents的路径,如果看不懂没关系,就理解为获取程序路径就行了。
下面控制台会打印出如下文字:
Cocos2d: the xml path is /Users/hangm/Library/Application Support/iPhone Simulator/6.0/Applications/AAB4B5DD-CD66-482B-BD11-B923A1AD645D/Library/Caches/
这行输出就显示出了程序中xml或者plist的路径,我给大家翻译一下,
/Users 就是打开电脑里边的硬盘,然后会看见一个用户,这就是这个目录
/hangm 这是我电脑的名字
/Library 资源库
注意了啊,当你打开以你的名字为为文件名的文件夹时,你会发现,没有“资源库”这个文件夹,为什么呢,因为这个文件夹被隐藏了,我们需要显示隐藏文件
显示隐藏文件 ,我们把中端打开,然后输入如下命令:
显示文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
defaults write com.apple.finder AppleShowAllFiles YES
隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
defaults write com.apple.finder AppleShowAllFiles NO
输入完指令,需要重启Finder,方法如下:
重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->重新启动
这时候你就能看见隐藏的“资源库”文件夹了,双击不能打开,你可以点鼠标右键,打开,来打开这个文件夹。
/Application Support接着打开这个文件夹
/iPhone Simulator 继续打开
/6.0 我这里有两个模拟器,5.0和6.0所以就有两个文件夹,这时代开6.0的文件夹
/Applications 打开文件夹
/AAB4B5DD-CD66-482B-BD11-B923A1AD645D 这一大串字母符号组成的字符串是程序ID,程序ID是唯一的,我们打开这个文件夹
/Library/ 打开
Caches/ 打开
在这里,我们就看到了我们可以读写的XML或者Plist文件。