Node.jsでファイルを読み込む:fs/promisesモジュールを使う
Node.jsでファイルを読み込む方法
fsモジュールを使う
Node.jsには、ファイル操作用の標準モジュールであるfs
モジュールが用意されています。このモジュールを使って、ファイルを読み込むことができます。
同期処理
fs
モジュールには、ファイルを読み込むための同期処理と非同期処理の両方のメソッドが用意されています。同期処理は、ファイルを読み込む処理が完了するまで他の処理を待機します。
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf-8');
console.log(data);
このコードは、file.txt
というファイルを同期的に読み込み、その内容をdata
変数に格納します。'utf-8'
という文字コードを指定することで、ファイルの内容をUTF-8文字列として読み込むことができます。
非同期処理は、ファイルを読み込む処理を別スレッドで実行し、他の処理を待機せずに実行できます。
const fs = require('fs');
fs.readFile('file.txt', 'utf-8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
このコードは、file.txt
というファイルを非同期的に読み込み、その内容をdata
変数に格納します。err
変数には、エラーが発生した場合はエラーオブジェクトが格納されます。
fs/promisesモジュールを使う
Node.js v10.0.0以降では、fs/promises
モジュールが提供されています。このモジュールは、fs
モジュールの非同期処理のメソッドをPromise化したものになっています。
const fs = require('fs/promises');
const data = await fs.readFile('file.txt', 'utf-8');
console.log(data);
このコードは、fs/promises
モジュールを使って、file.txt
というファイルを非同期的に読み込み、その内容をdata
変数に格納します。await
キーワードを使って、Promiseの解決を待機しています。
サードパーティ製のモジュールを使う
Node.jsでファイルを読み込むには、いくつかの方法があります。それぞれの特徴を理解して、目的に合った方法を選びましょう。
これらのサンプルコードは、Node.jsの標準モジュールであるfs
モジュールを使ってファイルを読み込む方法を解説しています。
// 同期処理
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf-8');
console.log(data);
このコードは、file.txt
というファイルを同期的に読み込み、その内容をdata
変数に格納します。
// 非同期処理
const fs = require('fs');
fs.readFile('file.txt', 'utf-8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
また、fs/promises
モジュールを使うこともできます。
// Promises
const fs = require('fs/promises');
const data = await fs.readFile('file.txt', 'utf-8');
console.log(data);
ご自身の目的に合わせて、適切な方法を選んでください。
Node.jsでファイルを読み込むその他の方法
readline
モジュールは、ファイルの内容を逐次的に読み込むためのモジュールです。ファイルの内容が大きい場合や、逐次的に処理したい場合に便利です。
const readline = require('readline');
const rl = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
});
rl.on('line', (line) => {
console.log(line);
});
stream
モジュールは、データストリームを操作するためのモジュールです。ファイルの内容をストリームとして読み込むことで、メモリ使用量を抑えることができます。
const fs = require('fs');
const stream = require('stream');
const readableStream = fs.createReadStream('file.txt');
readableStream.on('data', (chunk) => {
console.log(chunk.toString());
});
これらのモジュールは、それぞれ異なる機能を提供しているので、目的に合ったモジュールを選びましょう。
node.js