【发布时间】:2015-07-14 15:39:18
【问题描述】:
我想接收来自 Node.js 的 wav 流(在附加组件中)。它是这样实现的:
readableStream.on('data', function(chunk) {
var obj1 = addon.buffering(chunk);//my addon
});
但现在我想缓冲这些信息,并创建原始 wav 的副本。到目前为止,我无法用字节填充新文件。
void buffering(const FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
Local<Object> bufferObj = args[0]->ToObject();
char *buf = node::Buffer::Data(bufferObj);
if (i == 0){ fp = fopen("copy.wav", "wb"); i++;}
fwrite(buf, 1, sizeof(buf), fp);
fflush(fp);
if (i == 3){ fclose(fp); }
i++;
Local<String> devolve = String::NewFromUtf8(isolate, "buffering_success");//C++--->JS
args.GetReturnValue().Set(devolve);
}
我不明白为什么,但sizeof(buf) 总是太小。我想是因为这个。
【问题讨论】:
-
sizeof(buf)==sizeof(char*)是一个编译时常量。你需要找到一个 API 来告诉你那个东西的大小。 -
这与 C 有什么关系?没有给出 C 代码。
-
Fwrite.. 用 C 写文件
-
这不是有效的 C 代码。
if是 Python、C、BASIC、Pascal 等中的有效关键字。您还想添加这些标签吗? -
是否实现了 v8.h 和 node.h 的 C 代码
标签: c++ node.js v8 node.js-addon