はじめに
この記事では、標準ライブラリの使用方法の解説の一部をご紹介します。標準ライブラリの使用方法では、下記のサンプルプログラムを作成します。
- fsとpathによるファイルIO
- urlとhttpによるHTTPリクエスト送信
- cryptoによるSHA-256ハッシュ計算
- eventsによるEventEmitterの使用
この記事では、fsとpathによるファイルIOのサンプルプログラムを作成します。
ワークスペースの作成
下記コマンドでプログラムを格納するディレクトリを新たに作成します。
mkdir workspace/js/basic/02-standard-library
mkdir workspace/js/basic/02-standard-library/01-fs-and-path
touch workspace/js/basic/02-standard-library/01-fs-and-path/index.js
cd workspace/js/basic/02-standard-library/01-fs-and-path
ファイルの読み込み
index.js
を編集します、編集後の内容を下記に記載します。
'use strict';
var fs = require('fs')
var path = require('path')
if (require.main === module) {
main({ argv: process.argv })
}
function main(options) {
var argv = options.argv
var input = argv[2]
var file = path.join(__dirname, input)
var buffer = fs.readFileSync(file)
var text = buffer.toString()
console.log(file)
console.log(buffer)
console.log(text)
}
実行する前に下記の内容のテキストファイルを作成します。
Hello, world!
下記コマンドでプログラムを実行します。
node index.js before.txt
実行結果の例を下記に示します。
/Users/susukida/workspace/js/basic/02-standard-library/01-fs-and-path/before.txt
<Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 2e 0a>
Hello, world!
path.join
はパスを良い感じに連結してくれる関数です。__dirname
にはソースコードを格納するディレクトリが代入されます。fs.readFileSync
は指定パスのファイルの内容を読み込み、Buffer
というデータ型を戻り値とする関数です。buffer
のtoString
メソッドを呼び出すことによってBuffer型から文字列型に変換することができます。
小文字を大文字に変換して表示
ソースコードの内容を下記の通り編集します。
'use strict';
var fs = require('fs')
var path = require('path')
if (require.main === module) {
main({ argv: process.argv })
}
function main(options) {
var argv = options.argv
var input = argv[2]
var file = path.join(__dirname, input)
var buffer = fs.readFileSync(file)
var text = buffer.toString()
var result = text.toUpperCase()
console.log(result)
}
実行コマンドは前回と同様です。
node index.js before.txt
実行結果は大文字で表示されます。
HELLO, WORLD!
文字列のtoUpperCase
メソッドを呼び出すことにより、文字列に含まれる全ての英字が大文字に変換されます。
ファイルの書き込み
ソースコードを下記の通り編集します。
'use strict';
var fs = require('fs')
var path = require('path')
if (require.main === module) {
main({ argv: process.argv })
}
function main(options) {
var argv = options.argv
var input = argv[2]
var output = argv[3]
var file = path.join(__dirname, input)
var buffer = fs.readFileSync(file)
var text = buffer.toString()
var result = text.toUpperCase()
fs.writeFileSync(output, result)
}
実行コマンドには出力先のファイルが追加されます。
node index.js before.txt after.txt
実行結果はafter.txt
に格納されます。
HELLO, WORLD!
fs
のwriteFileSync
関数を呼び出すことにより、指定パスのファイルにデータを書き込むことができます。
おわりに
次回は、urlとhttpによるHTTPリクエスト送信のサンプルプログラムを作成します。