【问题标题】:ofstream not creating file (Node.js addon)ofstream 不创建文件(Node.js 插件)
【发布时间】:2015-05-20 19:34:18
【问题描述】:

我正在尝试创建一个 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)。

报告的错误总是No such file or directory -- 即使在我物理创建~/license.txt 之后。

任何想法为什么这适用于一个目录而不是其他目录?如果是权限问题,我会收到不同的错误消息。

作为记录,我已经看到了大约 20 个其他关于“ofstream 无法创建文件”的 SO 问题,但是将其他标志传递给 open() 没有效果。我感觉这在某种程度上与在 Node/V8 中运行有关。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 啊,是的,我必须使用getpwuid(getuid()) 获取用户的主目录,然后从结构中解析pw_dir
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2010-10-04
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多