iOSでDocumentsフォルダの下にmkdirでサブフォルダを作成できない
/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Documentsの直下に
サブフォルダを作成したくて下記のようなソースコードを書きました、
サブフォルダをmkdirで作ったのですが、mkdirの戻り値が−1となり失敗します。
https://developer.apple.com/jp/documentation/FileSystemProgrammingGuide.pdf の
15ページによるとサブフォルダを作成できるはずなのですがなぜか失敗します。
引数の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ファイルになります。
// 使用しているインクルードファイル
#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);
}
}
iOS:8.3 xCode:6.3.2
06/20 追記:UnityのApplication.persistentDataPathをiOS側に渡しています。