Node.jsにおけるfs
モジュールを使用したファイル操作について、完全かつ包括的に説明します。fs
モジュールは、ファイルシステムにアクセスし、ファイルの読み書き、削除、作成などを行うためのAPIを提供します。Node.jsの非同期処理モデルとともに、ファイル操作を効率的に行うことができます。
1. fs
モジュールのインポート
まず、fs
モジュールを使用するには、Node.jsの標準ライブラリからインポートします。以下のコードはその方法です。

javascriptconst fs = require('fs');
これで、fs
モジュールが使用可能になります。fs
モジュールは、同期的なメソッドと非同期的なメソッドの両方を提供します。
2. ファイルの読み取り
同期的な読み取り
ファイルを同期的に読み取るには、fs.readFileSync()
メソッドを使用します。この方法は、ファイルが読み込まれるまでプログラムの実行がブロックされます。
javascriptconst data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
- 第1引数: 読み込むファイルのパス
- 第2引数: エンコーディング(省略した場合、バイナリデータとして読み込まれる)
非同期的な読み取り
非同期的にファイルを読み取るには、fs.readFile()
メソッドを使用します。この方法では、ファイルの読み込みが完了する前に他の処理を行うことができます。
javascriptfs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log(data);
});
- 第1引数: 読み込むファイルのパス
- 第2引数: エンコーディング
- 第3引数: コールバック関数(エラーとデータが渡されます)
3. ファイルの書き込み
同期的な書き込み
同期的にファイルを書き込むには、fs.writeFileSync()
メソッドを使用します。このメソッドは、指定したファイルにデータを書き込みます。
javascriptfs.writeFileSync('output.txt', 'こんにちは、世界!', 'utf8');
- 第1引数: 書き込むファイルのパス
- 第2引数: 書き込むデータ
- 第3引数: エンコーディング
非同期的な書き込み
非同期的にファイルを書き込むには、fs.writeFile()
メソッドを使用します。書き込みが完了すると、指定したコールバック関数が呼び出されます。
javascriptfs.writeFile('output.txt', 'こんにちは、世界!', 'utf8', (err) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log('ファイルに書き込みが完了しました');
});
- 第1引数: 書き込むファイルのパス
- 第2引数: 書き込むデータ
- 第3引数: エンコーディング
- 第4引数: コールバック関数
4. ディレクトリの操作
ディレクトリの作成
ディレクトリを作成するには、fs.mkdirSync()
(同期)またはfs.mkdir()
(非同期)を使用します。
同期的なディレクトリ作成
javascriptfs.mkdirSync('new_directory');
非同期的なディレクトリ作成
javascriptfs.mkdir('new_directory', (err) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log('ディレクトリが作成されました');
});
ディレクトリの削除
ディレクトリを削除するには、fs.rmdirSync()
またはfs.rmdir()
を使用します。
同期的なディレクトリ削除
javascriptfs.rmdirSync('new_directory');
非同期的なディレクトリ削除
javascriptfs.rmdir('new_directory', (err) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log('ディレクトリが削除されました');
});
5. ファイルの削除
ファイルを削除するには、fs.unlinkSync()
(同期)またはfs.unlink()
(非同期)を使用します。
同期的なファイル削除
javascriptfs.unlinkSync('output.txt');
非同期的なファイル削除
javascriptfs.unlink('output.txt', (err) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log('ファイルが削除されました');
});
6. ファイルの存在確認
ファイルが存在するかどうかを確認するには、fs.existsSync()
(同期)またはfs.exists()
(非同期)を使用します。
同期的な存在確認
javascriptif (fs.existsSync('example.txt')) {
console.log('ファイルは存在します');
} else {
console.log('ファイルは存在しません');
}
非同期的な存在確認
javascriptfs.exists('example.txt', (exists) => {
if (exists) {
console.log('ファイルは存在します');
} else {
console.log('ファイルは存在しません');
}
});
7. ファイルの情報取得
ファイルの詳細情報を取得するには、fs.statSync()
(同期)またはfs.stat()
(非同期)を使用します。
同期的なファイル情報取得
javascriptconst stats = fs.statSync('example.txt');
console.log(stats);
非同期的なファイル情報取得
javascriptfs.stat('example.txt', (err, stats) => {
if (err) {
console.error('エラーが発生しました:', err);
return;
}
console.log(stats);
});
8. ストリームを使用したファイル操作
大きなファイルを読み書きする場合、ストリームを使うことが推奨されます。これにより、メモリ消費を抑えつつ効率的にファイルを処理できます。
ファイルの読み取り(ストリーム)
javascriptconst readStream = fs.createReadStream('example.txt', 'utf8');
readStream.on('data', (chunk) => {
console.log('読み込んだデータ:', chunk);
});
readStream.on('end', () => {
console.log('ファイルの読み込みが完了しました');
});
ファイルの書き込み(ストリーム)
javascriptconst writeStream = fs.createWriteStream('output.txt', 'utf8');
writeStream.write('こんにちは、世界!');
writeStream.end();
writeStream.on('finish', () => {
console.log('ファイルへの書き込みが完了しました');
});
まとめ
Node.jsのfs
モジュールは、ファイル操作を簡単に行うための強力なツールです。同期的および非同期的なメソッドを提供し、ファイルの読み書き、削除、ディレクトリ操作、情報取得などを効率的に処理できます。ストリームを使用すれば、大きなファイルを扱う際にもメモリ使用量を最小限に抑えることができます。fs
モジュールを活用して、さまざまなファイル操作をシンプルに実行できるようになります。