本人在ipad上使用cocos2d-x开发工程,使用c++与object-c结合的形式开发
程序需要通过网络进行更新数据。
在模拟器环境中,创建文件夹与文件均可正常执行。
但在真机环境中,读取文件正常,但无法创建文件夹与文件 尝试过objectc方式与c++方式,都不能够创建。怀疑是权限问题,有解决过这个问题的朋友希望帮忙解决一下,谢谢了。在线等。

解决方案 »

  1.   

    看你在哪创建文件夹与文件。document文件夹你是有权限任意处置的。好像还有一两个目录你都是可以任意处置的。但是这些目录都在你的app下面。别的目录你就没这个权限了。
      

  2.   

    这和编程语言没有关系,你查查哪些目录ios允许你创建就可以了,系统这么设计的。除非你越狱了就畅通无阻了。
      

  3.   

    app下的你自己的目录document
    library
    tmp
      

  4.   

    经验证文件夹可以创建,但是文件不能写入,写入位置指定在app下的documents目录中,模拟器就可以,真机不行。尝试过如下2种办法:
    BOOL bRet = [writer writeToFile:[NSString stringWithUTF8String:szFileName] atomically:YES];
    //bRet  为 FALSE 未成功写入文件FILE *pFile = fopen(szFileName, "w");
    //pFile 为 NULL 为成功写入文件szFileName中的值:/var/mobile/Applications/8205B9DD-A503-4B75-8792-AD760753B4E1/Documents/Data/Pid00001/0.jpg
    确认过文件夹确实存在,模拟器上可以成功写入文件,但是真机不行。
      

  5.   

    尝试了temp路径:/private/var/mobile/Applications/8205B9DD-A503-4B75-8792-AD760753B4E1/tmp/Data/Pid00001/0.jpg
    还是无法创建文件
      

  6.   

    把你的szfilename怎么来的贴出来
      

  7.   

    szFileName 是我自己组的,在模拟器上是可以用的,组合路径函数如下:
    char* getFullPathName(char *szSubPath,char *szOutBuff)
    {
        NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:
                          [[[NSString alloc] initWithUTF8String:szSubPath]autorelease]];
        NSUInteger len = [path length];
        memcpy(szOutBuff, [path UTF8String], strlen([path UTF8String]));
        szOutBuff[len] = '\0';
        return szOutBuff;
    }

    char szFileName[MAX_PATH];
    getFullPathName("Data/Pid00001/0.jpg",szFileName);
    在内存中打印结果为:
    /private/var/mobile/Applications/8205B9DD-A503-4B75-8792-AD760753B4E1/tmp/Data/Pid00001/0.jpg
      

  8.   

    检查:/var/mobile/Applications/8205B9DD-A503-4B75-8792-AD760753B4E1/Documents/Data/Pid00001/0.jpg
    标红文件夹是否有文件写入权限, 或者把 /Data/Pid00001/0.jpg 都拼成 _Data_Pid00001_0.jpg, 直接写入DOC根目录, 把文件名当路径用.
      

  9.   

    /private/var/mobile/Applications/8205B9DD-A503-4B75-8792-AD760753B4E1/tmp/Data/Pid00001/0.jpg,一个是你获取这个路径的过程太复杂,另外这个路径是否存在?
      

  10.   

    //获取程序的根目录
     NSString *homeDirectory = NSHomeDirectory();
     //获取tmp目录的地址 
    NSString *tmpDirectory = [homeDirectory stringByAppendingPathComponent:@"tmp"];
    ios开发超级群,高手和高手之间的交流,来者注明来自CSDN:43146334
      

  11.   

    发现问题了,documents下是可以写入文件的,但是自己建立的文件夹没有写入文件的权限。
    另外发现documents路径下虽然可以写入文件,但是不允许删除。
    也没有发现怎么样可以去建立一个有权限读、写、删文件的文件夹
    明天用tmp文件夹试试能不能删除文件