ofstream 未创建文件(Node.js 插件)
ofstream not creating file (Node.js addon)
我正在尝试创建一个 addon for Node.js,它(除其他外)使用 ofstream
.
将内容写入我的 C++ class 中的文件
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
无法 open/create 有问题的文件,如果它位于其他任何地方。比如使用~/license.txt
就不行(注意:我是运行OSX).
报告的错误始终是 No such file or directory
-- 即使在我实际创建 ~/license.txt
.
之后也是如此
知道为什么这在一个目录中有效但在其他目录中无效吗?如果是权限问题,我会收到不同的错误消息。
作为记录,我已经看到了大约 20 个关于 "ofstream fails to create file" 的其他 SO 问题,但是将额外的标志传递给 open()
没有任何效果。我有一种感觉,这与 Node/V8.
中的 运行 有某种关系
我认为问题在于您需要以不同于 ~
的方式查找用户目录。
我正在尝试创建一个 addon for Node.js,它(除其他外)使用 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
无法 open/create 有问题的文件,如果它位于其他任何地方。比如使用~/license.txt
就不行(注意:我是运行OSX).
报告的错误始终是 No such file or directory
-- 即使在我实际创建 ~/license.txt
.
知道为什么这在一个目录中有效但在其他目录中无效吗?如果是权限问题,我会收到不同的错误消息。
作为记录,我已经看到了大约 20 个关于 "ofstream fails to create file" 的其他 SO 问题,但是将额外的标志传递给 open()
没有任何效果。我有一种感觉,这与 Node/V8.
我认为问题在于您需要以不同于 ~
的方式查找用户目录。