(3)同步IO讀寫

2018-02-24 16:05 更新

要求

編寫一個(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);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)