Node.js

Node.js 実践講座 〜基礎編〜 その2

More than 1 year has passed since last update.

はじめに

この記事では、標準ライブラリの使用方法の解説の一部をご紹介します。標準ライブラリの使用方法では、下記のサンプルプログラムを作成します。

  • 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を編集します、編集後の内容を下記に記載します。

index.js(ver.1)
'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)
}

実行する前に下記の内容のテキストファイルを作成します。

before.txt
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というデータ型を戻り値とする関数です。buffertoStringメソッドを呼び出すことによって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に格納されます。

after.txt
HELLO, WORLD!

fswriteFileSync関数を呼び出すことにより、指定パスのファイルにデータを書き込むことができます。

おわりに

次回は、urlとhttpによるHTTPリクエスト送信のサンプルプログラムを作成します。