編寫一個程序,執(zhí)行一個同步的文件系統(tǒng)操作,讀取一個文件,并且在終端(標(biāo)準(zhǔn)輸出stdout)打印出這個文件中的內(nèi)容的行數(shù)。類似于執(zhí)行?cat file | wc -l
?這個命令。
所要讀取的文件的完整路徑會在命令行第一個參數(shù)提供。
要執(zhí)行一個對文件系統(tǒng)的操作,將會用到 fs 這個 Node 核心模塊。要加載這類核心模塊或者其他的”全局”模塊,可以用下面的方式引入:
var fs = require('fs')
這樣就可以通過 fs 這個變量來訪問整個 fs 模塊了。
在 fs 中,所有的同步(或者阻塞)的操作文件系統(tǒng)的方法名都會以 ‘Sync’ 結(jié)尾。要讀取一個文件,將需要使用?fs.readFileSync('/path/to/file')
?方法。這個方法會返回一個包含文件完整內(nèi)容的 Buffer 對象。
(fs模塊API文檔)[https://nodejs.org/api/fs.html]
Buffer 對象是 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);
更多建議: