

/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Documentsの直下に  
サブフォルダを作成したくて下記のようなソースコードを書きました、  
サブフォルダをmkdirで作ったのですが、mkdirの戻り値が−1となり失敗します。

<https://developer.apple.com/jp/documentation/FileSystemProgrammingGuide.pdf>
の  
１５ページによるとサブフォルダを作成できるはずなのですがなぜか失敗します。

引数のbaseDirectoryに  
/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX/Documentsを渡した時は失敗し、  
/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX/Library/Cachesを渡した時は、mkdirの戻り値が=0となって成功し、Iexprolerと言うアプリでチェックしたところフォルダ構成が確認できたので処理そのものに問題はないと思っています。

下記ソースでbaseDirectoryに/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX/Documentsが入っていて、assetDirectoryにはa/b/c/d/e のように作成するサブフォルダを渡しています。

■デバッグ用にNSLogを使用していますが、最終的には削除しcppファイルになります。

[code]

    // 使用しているインクルードファイル
    #include <sys/stat.h>
    #include <dirent.h>
    #include <string>　
    // テンプレートの使用を宣言
    using namespace std;
    
    //****************************************
    // ディレクトリ作成処理
    //****************************************
    void MakeDirectoryFunction(string baseDirectory, string assetDirectory)
    {
        int retint = 0;
        int startPos = 0;
        int endPos = assetDirectory.find("/",startPos);
    
        string stringCut = "";
        string makeString = baseDirectory;
    
        while (endPos > 0) {
            NSLog(@"start=%d",startPos);
            NSLog(@"end=%d",endPos);
            stringCut = assetDirectory.substr(startPos,endPos - startPos);
            NSLog(@"stringCut=%s",stringCut.c_str());
            makeString = makeString + "/" + stringCut;
            NSLog(@"makeString=%s",makeString.c_str());
    
            retint = mkdir(makeString.c_str(), 0777);
            NSLog(@"retint = %d",retint);
            startPos = endPos + 1;
            endPos = assetDirectory.find("/",startPos);
        }
    }
    
[/code]

iOS:8.3 xCode:6.3.2

06/20 追記：UnityのApplication.persistentDataPathをiOS側に渡しています。


CC BY-SA 3.0
2015-06-18T15:32:07.663
11481
2015-06-19T20:45:52.173
2015-06-19T19:16:31.867
5261
5261
question
ios c++ unity3d c
iOSでDocumentsフォルダの下にmkdirでサブフォルダを作成できない


> /var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Documentsの直下に  
>  サブフォルダを作成したくて下記のようなソースコードを書きました、

iPhone 5s + iOS 8.3で、Documentsフォルダのパスを調べたところ、下のパスが返ってきました。

[code]

    /var/mobile/Containers/Data/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Documents
    
[/code]

回答ではありませんが、ひとつの情報として提供させていただきます。

なお、Documentsフォルダのパス取得は、下のコードを使います。

[code]

    // #import <Foundation/Foundation.h>
    
    NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *path = pathArray[0];
    
[/code]


CC BY-SA 3.0
2015-06-19T13:32:33.277
11534
2015-06-19T20:45:52.173
2015-06-19T20:45:52.173
7362
7362
11481
answer