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