Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodejs读取文件时垃圾数据_Javascript_Node.js_Buffer - Fatal编程技术网

Javascript 使用nodejs读取文件时垃圾数据

Javascript 使用nodejs读取文件时垃圾数据,javascript,node.js,buffer,Javascript,Node.js,Buffer,我试图通过在文件末尾使用1024字节来编写一些关于文件的元信息 var buffer = new Buffer(1024); buffer.write(JSON.stringify(data)); 一旦字符串被复制到缓冲区,我会像这样保存文件- fs.write(fd, buffer, 0, buffer.length, fileSize,callback); buffer = new Buffer(1024); fs.read(fd, buffer, 0, buffer.length, f

我试图通过在文件末尾使用1024字节来编写一些关于文件的元信息

var buffer = new Buffer(1024);
buffer.write(JSON.stringify(data));
一旦字符串被复制到缓冲区,我会像这样保存文件-

fs.write(fd, buffer, 0, buffer.length, fileSize,callback);
buffer = new Buffer(1024);
fs.read(fd, buffer, 0, buffer.length, fileSize, function(err, count, buffer) {
console.log(buffer.toJSON())
}
当我读取文件时,我只想提取保存在data变量中的元信息。我是这样做的-

fs.write(fd, buffer, 0, buffer.length, fileSize,callback);
buffer = new Buffer(1024);
fs.read(fd, buffer, 0, buffer.length, fileSize, function(err, count, buffer) {
console.log(buffer.toJSON())
}
不幸的是,上面的过程得到了json数据,但周围有一些垃圾数据。因此,buffer.toJSON()方法失败。对于这样的问题,我应该采取什么方法

编辑: 缓冲区没有完全填满

当前解决方案: 1.用null填充缓冲区。 2.使用JSON5解析json内容

最终解决方案 1.用“”填充缓冲区
2.使用JSON解析解析JSON内容

听起来您的缓冲区没有满。缓冲区在实例化时可以包含其他数据。是的,我的缓冲区仍然是空的。Brad试图说的是,当您创建缓冲区时,它不会将内存值初始化为0,因此您的错误数据可能来自您创建的缓冲区太大而无法包含数据这一事实。您认为保持“空”的值实际上是随机位(可能不是随机的,而是存储在这些内存地址的其他值的剩余值,这些值已被释放)。要么将缓冲区初始化为空字符串,要么创建一个正好与存储数据所需长度相同的缓冲区。@ChrisCM用null填充缓冲区也会在json解析中产生问题。我说过用空字符串初始化缓冲区,而不是null,null和empty是非常不同的。在您的例子中,为了配合JSON解析器,在本例中,“empty”很可能将每个字符设置为一个空格字符。您也可以选择我的备选注释,即创建一个正好符合您需要的大小的缓冲区。