Node.jsにおけるファイル操作:テキストファイルの読み込みと配列への格納

2024-04-19

Node.js でテキストファイルを配列に読み込む方法

以下、その方法を2通りご紹介します。

fs.readFileSyncを使う方法

この方法は、ファイルを一度にすべて読み込み、配列に格納します。 コードは以下のようになります。

const fs = require('fs');

const filePath = 'path/to/your/file.txt';
const fileContent = fs.readFileSync(filePath, 'utf8');
const lines = fileContent.split('\n');

console.log(lines);

このコードは以下の処理を行います。

  1. fsモジュールをrequireします。
  2. 読み込むファイルのパスをfilePath変数に格納します。
  3. fs.readFileSyncを使用して、ファイルを同期的に読み込みます。エンコーディングはutf8を指定します。
  4. fileContentを改行('\n')で分割し、配列linesに格納します。
  5. linesの内容をコンソールに出力します。

ポイント

  • この方法は、ファイルが小さい場合に適しています。
  • ファイルが大きい場合や、メモリ使用量を抑えたい場合は、次の方法を使用することをおすすめします。

fs.createReadStreamとreadlineを使う方法

const fs = require('fs');
const readline = require('readline');

const filePath = 'path/to/your/file.txt';
const lines = [];

const rl = readline.createInterface({
  input: fs.createReadStream(filePath),
});

rl.on('line', (line) => {
  lines.push(line);
});

rl.on('close', () => {
  console.log(lines);
});
  1. 空の配列linesを作成します。
  2. readline.createInterfaceを使用して、rlという readline インターフェースを作成します。
  3. rl.on('line')イベントリスナーを定義します。このイベントリスナーは、ファイルから1行読み込まれるたびに呼び出されます。
  4. イベントリスナー内で、読み込まれた行をlines配列に追加します。
  • この方法は、ファイルが大きい場合や、メモリ使用量を抑えたい場合に適しています。
  • ファイルの読み込みが完了した後に、lines配列に対して処理を行うことができます。
  • 上記のコードは、UTF-8 エンコーディングのテキストファイルを読み込むことを前提としています。
  • 異なるエンコーディングのファイルを読み込む場合は、fs.readFileSyncまたはfs.createReadStreamのオプションでエンコーディングを指定する必要があります。
  • ファイルが存在しない場合や、読み込みに失敗した場合には、エラー処理を行う必要があります。



Node.js でテキストファイルを配列に読み込む サンプルコード

fs.readFileSyncを使う方法

const fs = require('fs');

const filePath = 'sample.txt';
const fileContent = fs.readFileSync(filePath, 'utf8');
const lines = fileContent.split('\n');

console.log(lines);

fs.createReadStreamとreadlineを使う方法

const fs = require('fs');
const readline = require('readline');

const filePath = 'sample.txt';
const lines = [];

const rl = readline.createInterface({
  input: fs.createReadStream(filePath),
});

rl.on('line', (line) => {
  lines.push(line);
});

rl.on('close', () => {
  console.log(lines);
});

このコードは、sample.txtというファイルを1行ずつ読み込み、配列linesに格納し、コンソールに出力します。

補足

  • 上記のコードは、Node.js 16.14.0 で動作確認しています。
  • ファイルパスは、ご自身の環境に合わせて変更してください。
  • ファイルの内容は、以下のようになっています。
line1
line2
line3
  • 出力は以下のようになります。
[ 'line1', 'line2', 'line3' ]

注意事項

  • ファイルが大きい場合は、fs.createReadStreamreadlineを使う方法の方が効率的に読み込むことができます。



Node.js でテキストファイルを配列に読み込む その他の方法

Promise.allとmapを使う方法

この方法は、Promise APIを使用して、ファイルを非同期的に読み込みます。 コードは以下のようになります。

const fs = require('fs');
const filePath = 'path/to/your/file.txt';

fs.promises.readFile(filePath, 'utf8')
  .then((fileContent) => {
    const lines = fileContent.split('\n');
    return lines;
  })
  .then((lines) => {
    console.log(lines);
  })
  .catch((err) => {
    console.error(err);
  });
  1. fs.promises.readFileを使用して、ファイルを非同期的に読み込みます。
  2. ファイルの内容をPromiseで返します。
  3. Promiseがresolveされると、thenハンドラーが呼び出されます。
  4. thenハンドラー内で、ファイルの内容を改行で分割し、配列linesに格納します。
  5. catchハンドラー内で、エラーを出力します。
  • この方法は、非同期処理をわかりやすく記述することができます。
  • エラー処理を容易に行うことができます。

async/awaitを使う方法

この方法は、非同期処理をより簡潔に記述することができます。 コードは以下のようになります。

const fs = require('fs');
const filePath = 'path/to/your/file.txt';

(async () => {
  const fileContent = await fs.promises.readFile(filePath, 'utf8');
  const lines = fileContent.split('\n');
  console.log(lines);
})();
  1. async関数を使用します。
  2. awaitを使用して、fs.promises.readFileの非同期処理を実行します。
  • この方法は、async/await構文を使用して、非同期処理をより簡潔に記述することができます。
  • コードが読みやすくなり、メンテナンス性も向上します。

モジュールを使う方法

Node.js には、テキストファイルを扱うためのモジュールがいくつか用意されています。以下、いくつか例を挙げます。

これらのモジュールを使用すると、より柔軟にテキストファイルを処理することができます。

上記以外にも、様々な方法でNode.js でテキストファイルを配列に読み込むことができます。ご自身の目的に合った方法を選択してください。


javascript node.js


jQuery $.escape() 関数徹底解説!HTML文字列を安全にエスケープする方法

HTML文字列をそのまま出力すると、XSS(クロスサイトスクリプティング)などの脆弱性を招く可能性があります。そのため、HTML文字列を出力する前にエスケープ処理を行い、特殊文字を無害な文字に変換する必要があります。jQueryには、HTML文字列をエスケープするための便利な関数 $.escape() が用意されています。この関数を使うと、簡単に安全なHTML出力が可能になります。...


jQueryで現在のURLを取得する方法(window.location)

location. hrefプロパティは、現在のブラウザウィンドウのURLを表します。 jQueryを使ってこのプロパティにアクセスするには、以下のようにします。window. locationオブジェクトは、ブラウザウィンドウの場所に関する情報を提供します。 jQueryを使ってこのオブジェクトにアクセスするには、以下のようにします。...


最新バージョンを常に維持!npm パッケージの自動チェック・更新のベストプラクティス

以下の環境が整っていることを確認してください。Node. js がインストールされているTeamCity サーバーが稼働しているTeamCity エージェントが Node. js プロジェクトのソースコードにアクセスできるTeamCity で Node...


【Node.js初心者向け】エラー「Cannot find module express」を解決して、Expressを使ったWebサーバーを作ってみよう!

このエラーは、Node. jsアプリケーションで express モジュールをインポートしようと試みたときに発生しますが、Node. jsがそのモジュールを見つけることができない場合に発生します。 考えられる原因は以下の通りです。解決策以下の手順で問題を解決することができます。...


ts-node vs tscコマンド:TypeScriptファイル実行方法の比較

方法主に2つの方法があります。tscコマンドはTypeScriptファイルをJavaScriptに変換し、実行します。 手順 以下のコマンドを実行します。 tsc ファイル名. ts node ファイル名. jstscコマンドはTypeScriptファイルをJavaScriptに変換し、実行します。...


SQL SQL SQL SQL Amazon で見る



Node.js:fs.createReadStreamでファイルを行単位で処理する方法

最も簡単な方法は、fs. readFileSyncを使ってファイル内容をすべて読み込み、splitを使って行に分割する方法です。この方法はシンプルで分かりやすいですが、ファイル全体をメモリに読み込むため、大きなファイルの場合、メモリ使用量が多くなる可能性があります。


【保存版】Node.jsファイル操作:読み込み、書き込み、削除完全ガイド

fs. readFileSyncは、ファイルを同期的に読み込む関数です。同期処理なので、関数が終了するまで他の処理は実行されません。このコードは、text. txtファイルをutf8エンコーディングで読み込み、その内容をコンソールに出力します。