編寫一個(gè)程序,執(zhí)行一個(gè)同步的文件系統(tǒng)操作,讀取一個(gè)文件,并且在終端(標(biāo)準(zhǔn)輸出stdout)打印出這個(gè)文件中的內(nèi)容的行數(shù)。類似于執(zhí)行?cat file | wc -l
?這個(gè)命令。
所要讀取的文件的完整路徑會(huì)在命令行第一個(gè)參數(shù)提供。
要執(zhí)行一個(gè)對(duì)文件系統(tǒng)的操作,將會(huì)用到 fs 這個(gè) Node 核心模塊。要加載這類核心模塊或者其他的”全局”模塊,可以用下面的方式引入:
var fs = require('fs')
這樣就可以通過 fs 這個(gè)變量來訪問整個(gè) fs 模塊了。
在 fs 中,所有的同步(或者阻塞)的操作文件系統(tǒng)的方法名都會(huì)以 ‘Sync’ 結(jié)尾。要讀取一個(gè)文件,將需要使用?fs.readFileSync('/path/to/file')
?方法。這個(gè)方法會(huì)返回一個(gè)包含文件完整內(nèi)容的 Buffer 對(duì)象。
(fs模塊API文檔)[https://nodejs.org/api/fs.html]
Buffer 對(duì)象是 Node 用來高效處理數(shù)據(jù)的方式,無論該數(shù)據(jù)是 ascii 還是二進(jìn)制文件,或者其他的格式。Buffer 可以很容易地通過調(diào)用?toString()
?方法轉(zhuǎn)換為字符串。如:
var s tr = buf.toString()。
(Buffer模塊API文檔)[https://nodejs.org/api/buffer.html]
簡單地計(jì)算行數(shù)方法,可以使用.split() 分割成子字符串?dāng)?shù)組,’\n’可以作為分隔符。
var fs = require('fs');
var res = fs.readFileSync(process.argv[2], 'utf-8');
console.log(res.split('\n').length-1);
更多建議: