Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8812

Node.jsのfsモジュールの使い方

$
0
0

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('ファイルが作成されました');}});

ストリーム

当初、ストリームを使う理由が分からなかったのですが、ストリームだとデータを必要な分だけ受け取ることができるようになるため、メモリを多く使わずに済むそうです。

参考:Node.js Stream を使いこなす

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ファイルも大きくなく、この程度のファイルならばスピードに大きな違いはありませんでした。
ですが、これが大規模な開発になると違いが出てくると思われます。


Viewing all articles
Browse latest Browse all 8812

Trending Articles