2

考虑下面的这个node.js应用程序:

var spawn = require('child_process').spawn,
    dir = spawn('dir', ['*.txt', '/b', '/s']);

dir.stdout.on('data', function (data) {
    //(A)
    console.log('stdout: ' + data);
});

在 (A) 中,on data事件等待stdout输出,我们可以想象输出来自cmd /c dir *.txt /b /s.

但它不会发生。在data变量中,stdout输出包含多行,并且要处理每个文件路径的内容,我们必须用 CRLF ( \r\n) 分割。为什么会发生这种情况?

4

1 回答 1

2

因为这只是来自子进程标准输出的纯数据流。不知道该数据是否采用任何特定格式,或者它是否包含任何特定字符。因此,数据被视为字节流,并以块的形式处理,而不考虑这些字节的内容或含义。这是系统周围管道数据的最一般形式。但是请注意,有些包装流会缓冲原始数据流并为您提供一系列文本行。你会在 npmjs.org 上找到很多模块

于 2013-07-22T14:31:14.323 回答