C ++ MAC OS X не может записать в ~ / Библиотека / Поддержка приложений / <appname> - PullRequest
1 голос
/ 09 августа 2011

Если я сохраняю файлы в пакете .app, он сохраняет ОК, но Apple рекомендует сохранять файлы в Поддержке приложений в

~/Library/Application Support/appname

или

~/Library/Application Support/bundleid

Я пробовал оба, но я всегда получаю исключение.Я получаю путь к службе поддержки приложений, который

/Users/myname/Library/Application Support/com.company.appname/

или

/Users/myname/Library/Application Support/AppName/

com.company.appname указан правильно внутри моего info.plist, а AppName равно product AppName.app, поэтому пути кажутся правильными.

{
    FilepathProcessor::pathForFile(fpath, "menustate", ".sav", 
                                   PATH_TO_DESTINATION_SAVE_LOAD_FOLDER);

    std::ofstream file;
    file.exceptions(std::ofstream::eofbit | std::ofstream::failbit | 
                    std::ofstream::badbit);
    INFO_ARG("prepare to save to '%s'", fpath.c_str());

    try {
        file.open(fpath.c_str(), std::ios::out | std::ios::binary | 
                  std::ios::trunc);
        ERROR_IF_ARG(!file.is_open(), "couldnt open file for saving at '%s'",
                     fpath.c_str(), return);

        //will pass this point

        //exception happens by first write
        WRITE_INT_TO_BINFILE(file, episode);

        //...

    } 
    catch (std::ofstream::failure e) {
        ERROR_IF_ARG(true, "exception %s", e.what(), return);
    }
    file.close();
}

Вывод:

INFO : prepare to save to '/Users/myname/Library/Application
       Support/com.comapny.appname/menustate.sav' [CALLED BY : saveToFile]

ERROR! 
    Text : exception basic_ios::clear

1 Ответ

5 голосов
/ 09 августа 2011

Каталог не автоматически создан для вас.Перед сохранением файла сначала необходимо проверить, существует ли каталог, а если нет, вам нужно создать каталог.

...