Javascript 缓冲区的输出杂乱无章

Javascript 缓冲区的输出杂乱无章,javascript,node.js,Javascript,Node.js,现场如下: a、 js: 新东西 守则: var fs = require('fs'); var fileName = 'a.js'; fs.open(fileName, 'r', function (error, fd) { var buf = new Buffer(1024); fs.read(fd, buf, 0, buf.length, null, function (error, bytesRead, buffer) { console.log

现场如下:

a、 js:

新东西

守则:

var fs = require('fs');
var fileName = 'a.js'; 

fs.open(fileName, 'r', function (error, fd) {

    var buf = new Buffer(1024);

    fs.read(fd, buf, 0, buf.length, null, function (error, bytesRead, buffer) {

        console.log(buffer.toString());

        });     

    });
输出混乱

下面是我的问题:

  • 为什么输出是混乱的,而不是有效的部分
  • 如何只输出有效部分
  • fs.read中回调的第三个参数只是fs.read函数的第二个参数。是这样吗

  • 您应该限制缓冲区打印的长度,如下所示

  • 输出混乱,因为缓冲区打印您在这一行上分配的整个内存地址

    var buf = new Buffer(1024);
    
  • 要输出有效部分,只需将limitaion置于
    buffer.toString
    方法上,如下所示

    console.log(buffer.toString('utf-8' , 0 , bytesRead));
    
  • 是的,这是正确的方式

  • 除了buffer.toString之外,您的代码似乎是正确的。有些事情仍在考虑之中。如果我只想输出这次读取的零件,并且偏移量不是零,由于偏移量不是回调的参数,我如何才能得到我感兴趣的部分。我认为偏移量是fs开始读取文件的指针,如果将偏移量筛选为其他值,它将从该行开始读取文件,并在callbackps.read中为您提供该部分的值(fd、缓冲区、偏移量、长度、位置、回调)。根据api,位置是开始读取我的文件的位置,偏移量是写入缓冲区的位置。是的,你是对的,我也检查了为偏移量设置不同的值,但它不起作用。只有空值和0起作用,让我检查fs的源,我会在得到一些信息时更新你