有人可以解释这个node.js代码的含义吗?

时间:2014-03-06 23:18:58

标签: node.js

我正在终端中使用learnyounode进行这些练习,我有一个爆炸,但我只是需要一步一步地解释这段代码中发生了什么。

var fs = require('fs')

var filename = process.argv[2]
var buf = fs.readFileSync(filename)
var str = buf.toString();
var count = str.split('\n').length

console.log(count - 1)

非常感谢!

3 个答案:

答案 0 :(得分:1)

var fs = require('fs')

这告诉节点加载名为fs的“文件系统”包。它用于管理文件系统。

var filename = process.argv[2]
var buf = fs.readFileSync(filename)
var str = buf.toString()

filename变量从索引2处的参数读入,看起来是文件名。然后,创建一个名为buf的缓冲区来读入此文件中的数据。然后,创建str以将该信息转换为string

最后,var count = str.split('\n').length接受此字符串并将其按\n或按行拆分为数组,并获取此数组的长度。现在这是行数。

console.log(count - 1)只需使用- 1将此行数输出到控制台,以消除文件末尾的额外换行符或作者知道的其他一些额外数据。

答案 1 :(得分:0)

拉入'fs'模块(文件系统功能)

使用args列表中的第三个参数作为路径打开文件

使用fs import来读取文件的内容

将文件内容拆分为逐行数组并获取数组长度(又称行数)

写入数组长度减去1,这是数组的最后一个索引。如果有标题行,则也可以是内容行数。

答案 2 :(得分:0)

此代码将读取文件并打印行数

var fs = require('fs')

fs是一个进行文件操作的节点模块。该行将创建一个fs变量,可以访问fs模块中的所有导出函数。它就像一个可以访问所有公共函数的类的对象。它类似于c #include语句或java import语句。

var filename = process.argv[2]

argv是一个包含在terminal / command-prompt中指定的参数列表的数组。所以这一行会从终端读取filename

var buf = fs.readFileSync(filename)

此行将创建变量buf并将名为filename的文件的内容保存到其中。内容不会保存为字符串,因此需要在下一行进行转换。

var str = buf.toString();
默认情况下,

buf有一个方法/函数toString()原型。此方法返回转换为字符串的变量,因此str将原始文件的内容作为字符串。

var count = str.split('\n').length

str默认使用split方法原型。它将分隔符作为参数并返回一个字符串数组。因此str.split('\n')将返回一系列分隔的行(由'\ n'分隔),然后将在该数组上调用length以返回其长度。

您可以将其分为两个阶段,如下所示

var lines = str.split('\n')
var count = lines.length

最后,假设存在最后一个空白行,count减少1。 console.log会将其记录到终端/命令提示符中。

console.log(count - 1)