Я пытаюсь создать аддон для Node.js который (помимо прочего) записывает содержимое в файл внутри моего класса C ++, используя ofstream
,
std::ofstream license_file;
std::string fileContent(*NanAsciiString(args[0]));
license_file.open(PATH);
//file doesn't yet exist, so create it
if(!license_file) {
printf("ERROR: %s (%s)\n", strerror(errno), PATH);
}
license_file << fileContent;
license_file.close();
Это работает нормально, если PATH
установлен в тот же каталог, что и мой код Node.js (например, ./license.txt
).
Тем не мение, ofstream
не удается открыть / создать рассматриваемый файл, если он находится в другом месте. Например, используя ~/license.txt
не работает (примечание: я использую OSX).
Об ошибке сообщается всегда No such file or directory
— даже после того, как я физически создаю ~/license.txt
,
Есть идеи, почему это работает в одном каталоге, но не в других? Если бы это была проблема с разрешениями, я бы ожидал другое сообщение об ошибке.
Для протокола, я видел около 20 других SO вопросов о «ofstream не удается создать файл», но передавая дополнительные флаги в open()
не имеет никакого эффекта У меня такое чувство, что это как-то связано с работой внутри Node / V8.
Я думаю, что проблема заключается в том, что вам нужно узнать каталог пользователя по-другому, чем с помощью ~
,