从NodeJS返回二进制数据

时间:2011-09-14 22:44:17

标签: javascript file-io node.js

我有一个名为ReadBinaryData()的函数,我想创建一个读取流来读取二进制数据并通过回调将二进制数据返回给调用函数。看来你可以通过几种不同的方式来实现这一点,并且我已经阅读了有关如何执行此操作的相互矛盾的信息。我想我应该使用Buffer对象,但不确定如何。我有以下,但它似乎没有正常工作。有什么建议吗?

function ReadBinaryData(successCallback){               
    var streamHandle = fs.createReadStream("PATH TO FILE",  {encoding: 'binary'});      
    var contentRead = '';       
   streamHandle.addListener('data', function(data) {            
        contentRead += data;                            
    });

   streamHandle.addListener('end', function(data) {                         
        successCallback(contentRead);       
    });     
};

1 个答案:

答案 0 :(得分:1)

我在5.x分支中使用了nodejs Buffer。我查看那里的文档并阅读。有很多新方法可以帮助你的二进制流。虽然,在将来的版本中将删除二进制选项,因此您可能需要重新考虑您正在做的事情以及原因。

http://nodejs.org/docs/v0.5.6/api/buffers.html

以下是缓冲区的一个示例用法,我使用5.x分支代替此代码,有一个类似于writeUInt32LE但类似二进制的方法。还有相应的读取方法。如果您不能使用5.x分支,您可以查看nodejs javascript libs并查看他们的方法如何将字符串转换为您想要的格式。

  var cur = this.network.ipInt;
  var bcast = this.broadcast.ipInt;
  var addresses = new Buffer((bcast-cur)*10);
  var offset = 0;
  while (cur < bcast){
    cur += 1;
    addresses.writeUInt32LE(cur,offset);
    offset+=10;
  }