fsモジュールとは
fsモジュールはファイルを扱うためのモジュールで、ファイルから書き出したり、ファイルに書き込んだりするときに役立ちます。
Node.jsがはじめから提供しているモジュールなので、Node.jsのインストールがしてあれば、fsモジュールのインストールの必要はありません。
ファイルの読み込み
constfs=require('fs');//fs.readFileSync(ファイルのパス, 文字コード, コールバック関数)fs.readFileSync('./text.txt',utf-8,(err,data)=>{//dataがファイルの中身、errは読み込み時のエラーif(data){console.log(data);}else{console.log(err);}});
ファイルへの新規書き込み
constfs=require('fs');//fs.writeFileSync(ファイルのパス, 書き込む文字, 文字コード, コールバック関数)fs.writeFileSync('./text.txt',"こんにちは",utf-8,(err)=>{if(err){console.log(err);}});
ファイルへの追加書き込み
constfs=require('fs');//fs.appendFileSync(ファイルのパス, 書き込む文字, 文字コード, コールバック関数)fs.appendFileSync('./text.txt',"こんにちは",utf-8,(err)=>{if(err){console.log(err);}});
ファイルの削除
index.js
constfs=require('fs');//fs.unlink(ファイルのパス, コールバック関数)fs.unlink(process.argv[2],(err)=>{if(err){console.error(err);}else{console.log('削除が終わりました');}});
process.arg[2]はコマンドの第三引数を指すので、以下のようにファイルをコマンドの第三引数に書き、ファイルの実行を行います。
console
$ node index.js ./text.txt
ファイルの作成
constfs=require('fs');//fs.open(新規作成ファイルのパス, 書き込む文字, コールバック関数)fs.open('./text.txt','こんにちは',(err)=>{if(err){console.log(err);}else{console.log('ファイルが作成されました');}});
ストリーム
当初、ストリームを使う理由が分からなかったのですが、ストリームだとデータを必要な分だけ受け取ることができるようになるため、メモリを多く使わずに済むそうです。
constfs=require('fs')//読み込みストリームを作成constrs=fs.createReadStream('./text.html');//dataイベントが発生したら(データを受け取ったら)、chunkに'./text.html'のデータが入ります。rs.on('data',(chunk)=>{res.write(chunk)});
普通のファイル読み込みで同じ処理をしてみると、
readFileSyncだと、同期的な読み込みになるため、すごく読み込みが遅いです。
そのため、readFileで非同期的な読み込みをしています。
constfs=require('fs');//fs.readFile(ファイルのパス, コールバック関数)fs.readFile('./text.html',(err,data)=>{//dataがファイルの中身、errは読み込み時のエラーif(data){res.write(data);}else{console.log(err);}});
今回は、./text.htmlファイルも大きくなく、この程度のファイルならばスピードに大きな違いはありませんでした。
ですが、これが大規模な開発になると違いが出てくると思われます。