最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node.js如何读取和写入数组作为二进制文件

网站源码admin20浏览0评论

Node.js如何读取和写入数组作为二进制文件

Node.js如何读取和写入数组作为二进制文件

我有一个大数组,需要从文件中读取。通常,我会将其保存为JSON,但是UTF-8编码文件的大小要大得多,而且我对大小的要求非常严格,因此每个Kb都很珍贵。

这是我到目前为止的内容:

// 
var toBuffer = require('typedarray-to-buffer');
var buffer =  toBuffer(myArray);
var wstream = fs.createWriteStream('./myArray');
wstream.write(buffer);

// later...
var buff = new Buffer(data); // <-- file data passed in as a buffer
myArray =  buff; // <--still binary :-(

我正在关注此helpful article about writing binary files,但是它没有介绍如何读回它们。我认为我所处的部分是将缓冲区数据转回数组。

更新

这里是数组在写入文件之前的console.log()

Int32Array {
  '0': 2107281600,
  '1': -370226405,
  '2': 274543611,
  '3': 172775319,
  '4': -1927927544,
  '5': -248215383,
  '6': -1295527238,
  '7': -1774538531,
  '8': -784581845,
  '9': 651425656,
  '10': -534521241,
  '11': -1788883022,
  '12': 1679049410,
  '13': -1728518340,
  ...
回答如下:

实际上,将二进制文件写入文件非常简单。对FS中的writeFileSync方法使用“二进制”编码类型字符串。像这样:

// Assume you have an Int32Array called myArray

var fs = require('fs');
fs.writeFileSync('/tmp/test.bin', myArray, 'binary');

现在您可以检查文件的大小是否与类型数组的字节大小匹配。例如,myArray.length * 4将是您的数据大小,在我的情况下为1228624。文件系统显示:

$ ls -l /tmp/test.bin
-rw-rw-r-- 1 flatmax flatmax 1228624 May  5 17:58 /tmp/test.bin
发布评论

评论列表(0)

  1. 暂无评论