Node.js: はじめの一歩 (1)
初歩的な話なのでコールバックなどの記述は使わず、 手続きを並べた簡素なサンプルにしています。
コマンドラインパラメータの取得
process.argv で取得できます。
Node.js v12.18.4: process.argv
/* node TestNodejs_process_argv1.js param1 param2 param3 */ const argv = process.argv; for (let i=0; i<argv.length; i++){ console.log(i +":"+ argv[i]); //console.log("%s:%s", i, argv[i]); //C言語 printf 風の書き方 }
テキストファイルの読み書き
ファイルの読み書きは、モジュール File System を使います。
Node.js v12.18.4: File system
Node.js で扱える文字コードは utf-8 です。 Shift_JIS (シフトJIS) や EUC_JP は扱いません。
その1
/* node TestNodejs_fs_textfile_write_read1.js */ const FS = require("fs"); const text = "こんにちは\nHello\n"; //テキストファイルを書く, UTF-8 (BOM なし)で出力 FS.writeFileSync("sample1.txt", text); //参考:こちらも一緒 //FS.writeFileSync("sample1.txt", text, { encoding:"utf8" } ); //テキストファイルを読む const text2 = FS.readFileSync("sample1.txt", { encoding:"utf8" } ); console.log(text2);
\n は改行を表します。
改行文字には \n と \r\n の2種類があります。
現在は特に理由がなければ \n を使います。
HTML: 改行を表す文字コード
JavaScript: 文字列の処理: 文字と文字コード
● 改行文字 \n HTML, Linux のテキストなど \r\n Windows のテキスト、昔のメモ帳などで保存したファイル(補足) Windows7 以前のメモ帳で改行が \n のテキストを表示すると、 改行されずに表示されます。 Windows10 のメモ帳では \n だけでも改行と認識されます。
● 参考: 他の文字記号 \t タブ
その2
テキストを行の配列として処理する例です。
配列に文字列を push() して、最後に join() で連結します。
読んだテキストファイルを行で分割するときには関数
split() を使います。
JavaScript: 文字列を連結する
JavaScript: テキストを行に分割する
/* node TestNodejs_fs_textfile_write_read2.js */ const FS = require("fs"); const filename = "sample2.txt"; //テキストを作って、ファイルに保存する const a = []; //配列を作る a.push("こんにちは"); a.push("hello"); const text = a.join("\n"); // 改行コード \n で連結する FS.writeFileSync(filename, text); //テキストファイルを行の配列として読む const list = readTextAsList(filename); for (const line of list){ console.log(line); } function readTextAsList(path){ const text = FS.readFileSync(path, { encoding:"utf8" } ); // text を \n で分割する const list = text.split("\n"); return list; }
文字コードについて
- Node.js ではテキストファイルの文字コードに utf-8 を使います。
シフトJIS や EUC-JP のテキストファイルは扱いません。 - Windows のプロンプトでリダイレクト処理する場合も文字コードに注意。
リダイレクトのときの文字コード