Arrays Node.js如何将数组作为二进制文件读写到文件中

Arrays Node.js如何将数组作为二进制文件读写到文件中,arrays,node.js,binary,buffer,Arrays,Node.js,Binary,Buffer,我有一个大数组,需要从文件中读入。通常我会将其保存为JSON,但UTF-8编码文件的大小要大得多,并且我有非常严格的大小要求,因此每Kb都是宝贵的 以下是我目前掌握的情况: // https://www.npmjs.com/package/typedarray-to-buffer var toBuffer = require('typedarray-to-buffer'); var buffer = toBuffer(myArray); var wstream = fs.createWrite

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

以下是我目前掌握的情况:

// https://www.npmjs.com/package/typedarray-to-buffer
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 :-(

将二进制文件写入文件实际上非常简单。使用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

将二进制文件写入文件实际上非常简单。使用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

buff.toString('utf-8')?不确定你有什么问题。@mh cbon那可能是我的问题!;-)要提交答案吗?请注意,在node下,它似乎没有用,请参阅:
如果此模块在node中使用,则它将只调用新的缓冲区。这只是为了方便在节点和浏览器中工作的模块。
@mh cbon我尝试添加
buff.toString('utf-8')
,但它不起作用。当我记录结果“数组”时,我看到
�+^K�[:�����'W�!�k?2�Ͽ�庀�%�*|�1i������,�ó�B�;�����B����N���T{l���B�钛�/xڶ��G�Ϳ�����K�D�Z`……你能展示myArray是由什么组成的吗?你能展示数据从哪里来吗?buff.toString('utf-8'))?不确定您的问题是什么。@mh cbon这可能是我的问题!;-)要提交答案吗?请注意,在node下它似乎没有用,请参阅:
如果此模块在node中使用,则它将只调用新缓冲区。这只是为了方便在node和浏览器中工作的模块。
@mh cbon我尝试添加
buff.toString('utf-8')
但它不工作。当我记录结果“array”时,我看到
�+^K�[:�����'W�!�k?2�Ͽ�庀�%�*|�1i������,�ó�B�;�����B����N���T{l���B�钛�/xڶ��G�Ϳ�����K�D�Z`……你能展示myArray是由什么组成的吗?你能展示数据来自哪里吗?