17
30

More than 3 years have passed since last update.

nodejsのfsモジュールの使い方

Last updated at Posted at 2020-03-07

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)
}

参考文献

この記事は以下の情報を参考にして執筆しました。

17
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
30