2014-03-06 84 views
0

我正在做終端學習中的learnyounode,通過這些練習,我有一個爆炸,但我只需要一步一步解釋這段代碼中發生了什麼。有人能解釋一下這個node.js代碼的含義嗎?

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) 

非常感謝!

在「FS」模塊(文件系統功能)
+0

從所提供的參數中讀取文件路徑,打開文件並將其作爲字符串讀取。計算文件中的行數。 – RacerNerd

回答

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即可消除文件末尾的額外換行符或其他作者瞭解的額外數據。

+0

好的,非常感謝!你能告訴我什麼時候運行這個,爲什麼每次都給我一個不同的數字? @Justin C –

+0

那麼唯一可能的方式是如果'filename'變量指向一個不同的文件。嘗試在'var filename = process.argv [2]'之後添加'console.log(filename)'來查看文件名是什麼。 –

+0

它出現爲「/var/folders/pf/0x9n5bts7y99kd1rm2c3ry9c0000gn/T/learnyounode_52597.tmp」@Justin C –

0

拉手

打開使用來自的args列表的第三個參數作爲路徑

一個文件使用FS進口讀取文件的內容

將文件內容分割成一行一行的數組並獲得數組長度(aka#行)

寫入數組長度減1,這是數組的最後一個索引。如果有標題行,這也可能是內容行的數量。

0

該代碼將讀取行的文件和打印數量

var fs = require('fs') 

FS是一個節點模塊做文件操作。該行將創建一個fs變量,該變量可以訪問fs模塊中的所有導出函數。它就像一個對象,可以訪問所有公共函數。它像一個c #include聲明或java import聲明。

var filename = process.argv[2] 

argv是包含在終端/命令提示符處指定的參數列表的數組。所以這條線會從終端讀取filename

var buf = fs.readFileSync(filename) 

這條線將創建一個變量buf和保存一個名爲filename進去文件的內容。內容不會保存爲字符串,因此需要在下一行進行轉換。

var str = buf.toString(); 

buf具有由缺省原型到其上的方法/函數toString()。此方法返回轉換爲字符串的變量,因此str將以原始文件的內容作爲字符串。

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

str已分割方法默認原型。它將分隔符作爲參數並返回一個字符串數組。所以str.split('\n')將返回一個由'\ n'分隔的行的數組,然後在該數組上調用length以返回其長度。

如下

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

最後count減少1假定最後的空白行存在,你可以把它分成兩個階段。 console.log將登錄到終端/命令提示符。

console.log(count - 1) 
相關問題