fsモジュールの使い方をまとめました。
前提条件
- npmがインストールされていること
同期と非同期
同期処理と非同期処理の2つのファイル処理が出来ます。Sync
と付けると同期処理で、付けないと非同期で処理されます。
同期 | 非同期 |
---|---|
statSync | stat |
readFileSync | readFile |
copyFileSync | copyFile |
unlinkSync | unlink |
- 同期は処理を完了するまで後続の処理を止める
- 非同期は処理の完了を待たずに後続の処理を行う
設定
mkdir
コマンドとtouch
コマンドでファイルを作成します。
$ mkdir dir&&touch test.js dir/test.txt
test.js
constfs=require('fs')try{fs.statSync('dir/test.txt')console.log('同期処理')}catch(err){console.log(err)}fs.stat('dir/test.txt',(err)=>{if(err)throwerrconsole.log('非同期処理')})console.log('後続の処理')
実行
node
コマンドを実行します。
$ node test
出力結果
同期処理
後続の処理
非同期処理
使い方
ファイルの存在確認
ファイルが存在していればオブジェクトを取得出来ます。isDirectory
メソッドでディレクトリかどうかも確認が出来ます。
constfs=require('fs')try{constdir=fs.statSync('dir')constfile=fs.statSync('dir/test.txt')console.log(dir.isDirectory())console.log(file.isDirectory())}catch(err){console.log(err)}
実行結果
true
false
ファイル一覧を取得
constfs=require('fs')try{console.log(fs.readdirSync('dir'))}catch(err){console.log(err)}
実行結果
[ 'test.txt' ]
ファイルの読み込み
constfs=require('fs')try{console.log(fs.readFileSync('dir/test.txt','utf8'))}catch(err){console.log(err)}
dir/test.txt
Hello world!
実行結果
Hello world!
ファイルの書き込み
ファイルが存在しなければ新規作成して、存在する場合は上書きします。
constfs=require('fs')try{fs.writeFileSync('dir/test2.txt','Hello world!!','utf8')}catch(err){console.log(err)}
実行結果
dir/test2.txt
Hello world!!
ファイルの追記
constfs=require('fs')try{fs.appendFileSync('dir/test.txt','Hello overwrite!','utf8')}catch(err){console.log(err)}
dir/test.txt
Hello world!!
実行結果
dir/test.txt
Hello world!!
Hello overwrite!
ファイルの複製
constfs=require('fs')try{fs.copyFileSync('dir/test.txt','dir/test2.txt')}catch(err){console.log(err)}
ファイルの削除
constfs=require('fs')try{fs.unlinkSync('dir/test.txt')}catch(err){console.log(err)}
参考文献
この記事は以下の情報を参考にして執筆しました。