c++ - ofstream 不创建文件(Node.js 插件)

标签 c++ node.js v8 node.js-addon

我正在尝试创建一个 addon for Node.js (除其他外)使用 ofstream 将内容写入我的 C++ 类中的文件。

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)。

报告的错误始终是没有这样的文件或目录——即使在我物理创建~/license.txt之后也是如此。

有什么想法为什么这在一个目录中有效但在其他目录中无效吗?如果是权限问题,我会收到不同的错误消息。

郑重声明,我已经看到了大约 20 个其他关于“ofstream 无法创建文件”的问题,但将附加标志传递给 open() 没有效果。我有一种感觉,这与在 Node/V8 中运行有某种关系。

最佳答案

我认为问题在于您需要以与使用 ~ 不同的方式查找用户目录。

关于c++ - ofstream 不创建文件(Node.js 插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358836/

相关文章:

c++ - 构造函数初始列表,这段代码是什么意思?

c++ - 这些对齐功能之间有什么区别?

javascript - expressJS : No overload matches this call 的 TypeScript 错误

javascript - Node.js Heroku 部署 - 无法执行安装后脚本来安装 Bower

javascript - JavaScript 引擎会优化闭包中定义的常量吗?

node.js - 在 Node js 中使用 'require' 以获得更好的性能

c++ - 根据用户请求停止 tbb 线程

c++ - Mysql 连接器 C++ 无缓冲结果集 C++

node.js - express文件上传返回400错误

javascript - "Isolate"在V8中的作用是什么?怎么可能单独制作 "Isolate"呢?