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

2024-04-02

Node.jsでファイルを読み込み、行ごとに処理する方法

fs.readFileSync と split

最も簡単な方法は、fs.readFileSyncを使ってファイル内容をすべて読み込み、splitを使って行に分割する方法です。

const fs = require('fs');

const filePath = './test.txt';
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');

lines.forEach(line => {
  console.log(line);
});

この方法はシンプルで分かりやすいですが、ファイル全体をメモリに読み込むため、大きなファイルの場合、メモリ使用量が多くなる可能性があります。

fs.createReadStream

大きなファイルの場合、fs.createReadStreamを使ってファイルを読み込み、ストリームごとに処理する方法が効率的です。

const fs = require('fs');

const filePath = './test.txt';
const readStream = fs.createReadStream(filePath, { encoding: 'utf8' });

readStream.on('data', (chunk) => {
  const lines = chunk.split('\n');
  lines.forEach(line => {
    console.log(line);
  });
});

この方法は、ファイル全体をメモリに読み込むことなく、行ごとに処理することができます。

readlineモジュールを使うと、より簡単にファイルを読み込み、行ごとに処理することができます。

const readline = require('readline');

const filePath = './test.txt';
const reader = readline.createInterface({
  input: fs.createReadStream(filePath, { encoding: 'utf8' }),
});

reader.on('line', (line) => {
  console.log(line);
});

この方法は、fs.createReadStreamを使う方法よりもコードがシンプルで分かりやすいです。

Node.jsでファイルを読み込み、行ごとに処理するには、いくつかの方法があります。 それぞれの特徴を理解し、状況に合わせて最適な方法を選びましょう。




fs.readFileSync

const fs = require('fs');

const filePath = './test.txt';
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');

lines.forEach(line => {
  console.log(line);
});

fs.createReadStream

const fs = require('fs');

const filePath = './test.txt';
const readStream = fs.createReadStream(filePath, { encoding: 'utf8' });

readStream.on('data', (chunk) => {
  const lines = chunk.split('\n');
  lines.forEach(line => {
    console.log(line);
  });
});

readlineモジュール

const readline = require('readline');

const filePath = './test.txt';
const reader = readline.createInterface({
  input: fs.createReadStream(filePath, { encoding: 'utf8' }),
});

reader.on('line', (line) => {
  console.log(line);
});

各コードの説明

  • filePath: 処理対象のファイルパス
  • content: ファイル内容
  • lines: ファイル内容を分割した行の配列
  • chunk: ストリームで読み込んだデータの塊

実行方法

  1. 上記のコードをファイルに保存します。
  2. ファイルを保存したディレクトリで、以下のコマンドを実行します。
node ファイル名.js

出力例

行1
行2
行3
...

注意事項

  • 上記のコードは、UTF-8エンコードのファイルを読み込むことを想定しています。
  • ファイルが存在しない場合、エラーが発生します。



Node.jsでファイルを読み込み、行ごとに処理するその他の方法

async/awaitを使って、コードをより簡潔に書くことができます。

const fs = require('fs');

const filePath = './test.txt';

async function readFile() {
  const content = await fs.promises.readFile(filePath, 'utf8');
  const lines = content.split('\n');

  lines.forEach(line => {
    console.log(line);
  });
}

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

const filePath = './test.txt';

function readFile() {
  const reader = fs.createReadStream(filePath, { encoding: 'utf8' });

  for await (const chunk of reader) {
    const lines = chunk.split('\n');
    lines.forEach(line => {
      console.log(line);
    });
  }
}

readFile();

これらのライブラリを使うと、より複雑な処理を簡単に実行することができます。


javascript node.js file-io


JavaScript オブジェクトプロパティの謎:その順序は保証されるのか?

オブジェクトリテラルを使用してオブジェクトを作成する場合、プロパティは上から下に記述された順序で格納されます。この例では、name プロパティが最初に記述されているため、Object. keys() メソッドによって最初に返されます。Object...


【保存版】Node.jsとExpressで「X-Powered-By: Express」ヘッダーを削除する方法集

Expressアプリケーションで生成される "X-Powered-By: Express" ヘッダーは、セキュリティ上の懸念や帯域幅節約の観点から削除したい場合があります。しかし、デフォルトでは無効化できないため、多くの開発者を悩ませています。...


Node.jsとnpmでクリーンインストールを行う手順

Node. jsプロジェクトで問題が発生した場合、根本的な原因を突き止めるために「クリーンインストール」と呼ばれる手法が有効となることがあります。これは、node_modulesディレクトリとpackage-lock. jsonファイルを削除し、その後、プロジェクトに必要なパッケージを再インストールするプロセスです。...


【実践編】JavaScriptでPromise.allSettled()を使って、全てのPromiseの結果を取得する方法

しかし、複数の Promise を実行する場合、すべての Promise が完了するまで待機したいことがあります。また、一部の Promise が拒否されても、残りの Promise の結果を取得したい場合もあります。以下では、すべての Promise が完了するまで待機する方法と、一部の Promise が拒否されても、残りの Promise の結果を取得する方法について、ES6 Promise を使って詳しく解説します。...


AxiosでDELETEリクエストを送信する:リクエストボディとヘッダーの指定方法

このチュートリアルでは、JavaScriptライブラリのAxiosを使用して、リクエストボディとヘッダーを含むDELETEリクエストを送信する方法について説明します。対象者JavaScriptとReact. jsの基礎知識を持っている方Axiosを使った経験がある方...


SQL SQL SQL SQL Amazon で見る



Node.js のメリットとデメリット: リアルタイムアプリケーション開発に最適?

Node. js は以下のようなケースで特に有効です。リアルタイムアプリケーション: チャット、ゲーム、通知など、リアルタイムで通信する必要があるアプリケーション開発に適しています。イベント駆動型アプリケーション: ユーザーの操作やデータの更新など、イベントが発生するたびに処理を行うアプリケーション開発に適しています。


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

以下、その方法を2通りご紹介します。この方法は、ファイルを一度にすべて読み込み、配列に格納します。 コードは以下のようになります。このコードは以下の処理を行います。fsモジュールをrequireします。読み込むファイルのパスをfilePath変数に格納します。


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

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


CSVファイルを読み込んでデータを活用:Node.jsによるCSV解析入門

CSVファイルは、カンマ区切りでデータを保存する一般的なファイル形式です。Node. jsを使ってCSVファイルを解析することで、そのデータをプログラムで処理することができます。必要なものNode. jsCSVファイルCSVファイルを解析するためのライブラリ(例:csv-parse)