我一直试图理解这段代码。我理解它在功能上的作用,但我无法理解技术部分。
下面的代码获取一个文件作为输入,读取它并在屏幕上显示行作为缓冲区
var fs = require('fs')
var file = fs.readFileSync(process.argv[2])
var offset = 0
for (var i = 0; i < file.length; i++) {
if (file[i] === 10) {
console.log(file.slice(offset, i))
i++
offset = i
}
}
console.log(file.slice(offset, i))
从我所看到的是&#34;文件[i] === 10&#34;在每个新行拆分缓冲区,但我不明白在这种情况下数字10的含义。有什么建议吗?
答案 0 :(得分:3)
来自fs.readFileSync(filename, [options])
docs:
如果指定了
encoding
选项,则此函数返回一个字符串。否则它返回一个缓冲区。
此处未显示encoding
选项,因此它返回缓冲区。
来自Buffer
docs:
<强>
buf[index]
强>在索引处获取并设置
octet
。这些值指的是单个字节,因此合法范围介于0x00
和0xFF
十六进制或0
和255
之间。
因此,file[i]
读取文件的i
th 字节。 file[i] == 10
检查文件的i
th 字节是否为值10
。
在ASCII中,值10对应于换行符中使用的LF
换行符;这个逻辑可能是为了检查文件中的换行符,并在读取整行后输出。
答案 1 :(得分:1)
javascript中的===运算符表示:等值和等号
所以f [i]的值必须是10,而正好是数字10,表示ascii中的字符LF。