learnyounode
Version:
Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.
35 lines (20 loc) • 2.4 kB
Markdown
撰寫一個程式,使用 **同步(Synchronous)** 操作方式的檔案系統 API。這個程式要開啟指定檔案,然後讀取並計算該檔案內容的行(\n)數,最後利用 console (標準輸出 stdout)方法將計算結果輸出到終端機命令列,輸出的結果就像是使用下列終端機命令一樣:
```
cat 檔案路徑 | wc -l
```
程式的第一個命令列參數將是檔案的完整路徑。
----------------------------------------------------------------------
## 提示
為了進行檔案系統(filesystem)的操作,你必須使用 Node.js 內建的 `fs` 核心模組。要載入此核心模祖,或任何全域(Global)的模組,您可以使用以下的語法:
```js
const fs = require('fs')
```
現在,您可以透過變數 `fs` 以使用 `fs` 模組的完整功能。因為 `fs` 模組已經被載入,並存放在名為 `fs` 的變數中。
fs 模組裡所有同步( synchronous ,或稱為阻塞, blocking )的功能都會以「Sync」結尾。您需要使用 `fs.readFileSync('檔案路徑')` 這個 API 去讀取一個檔案。這個 API 將會 *返回* 一個包含完整檔案內容的 `Buffer` 物件。
要閱讀並參考 `fs` 模組的說明文件,可以在瀏覽器中打開這個頁面:
{rootdir:/docs-nodejs/fs.html}
任何的大量資料,無論編碼是 ASCII、二位元或其他的格式, Node.js 都可以用 `Buffer` 物件有效地儲存和操作。使用 `Buffer` 本身的 `toString()` 方法,就可以簡單的把 `Buffer` 物件的內容轉換成可見字串(String)。如 `const str = buf.toString()` 。
要閱讀並參考關於 Buffer 物件的文件,可以在瀏覽器中打開這個頁面:
{rootdir:/docs-nodejs/buffer.html}
如果您正在尋找計算字串中換行符號的數目的方法,最簡單的做法是計算換行符號。請記得 Javascript 中是使用「\n」表示換行符號,所以你可以用 `String` 的 `.split()` 方法,對字串所有的換行符號處進行切割,並生成一個多字串組成的陣列(Array),然後由 Array 的大小得知行數 。注意,測試檔案的最後一行不會以換行符號「\n」結尾,所以使用這個方法得到的 Array 元素數目(也就是行數)將會比換行符號多一個。
注:終端機命令 `wc -l` 是計算換行符號的數量,並非是真實內容行數。