【Node.js入門】fsモジュールでファイルの読み書き方法まとめ

こんにちは、ライターのマサトです。今回は、Node.jsでファイル操作の全般を担う公式モジュールの「fs」を学習していきましょう!

この記事では、

  • 「fs」モジュールとは?
  • 「fs」モジュールの使い方
  •      

  • 「readFile」と「readFileSync」の違い
  • 「fs」のファイル操作
  • という基本的な内容から、などの応用的な使い方に関しても解説していきます。この記事で、「fs」モジュールをしっかり学習して自分のスキルアップを目指しましょう!

    目次

    「fs」モジュールとは?

    それでは、まず最初に「fs」モジュールについて基本的な知識から身に付けていきましょう。「fs」は、Node.jsでファイルを操作するための公式モジュールとして提供されています。

    ファイルを新規作成したり、読み込み・書き込みから追記・削除まで、一般的に必要な機能はあらかじめ用意されています。そのため、Node.jsが使える環境さえあればすぐにでも実行することが可能です。

    一般的なJavaScriptではあまりファイル操作を扱いませんが、Node.jsの場合はよく使う機能なので慣れておくようにしておきましょう!

    「fs」モジュールの使い方

    この章では、「fs」モジュールの基本的な使い方について見ていきましょう。一般的なファイルの読み込み方法について、実際のプログラミング手法を学んでいきます。

    基本的なファイル読み込みの書き方について

    まずは、もっとも基本となるファイルの読み込み方法から見ていきましょう!

    ただし、最初のコードを書き始める前に「require()」を使って「fs」モジュールを利用できる状態にしておきます。

    var fs = require('fs');
    

    このように記述することで、以降は「fs」を使ってさまざまなファイル操作のメソッドを使うことができます。そこで、ファイルを読み込むための「readFile」メソッドの書き方を見ておきましょう!

    fs.readFile(ファイルのパス, 文字コード, コールバック関数)
    

  • 第1引数には読み込みたいファイルのパスを文字列で記述します。
  • 第2引数には、例えば「utf8」などの文字コードを指定します。
  • 第3引数にはファイルを読み込んだあとに実行したい関数を指定します。
  • このように、簡単な記述でファイルを読み込むことができるので便利ですね。

    fsでファイルを読み込む方法

    それでは、実際にファイルを読み込むためのプログラムを作成してみましょう。今回は、単純な文字列が記述された「test.txt」ファイルを読み込んでみます。

    fs.readFile('/test.txt', 'utf8', function(err, data) {
    
      console.log(data);
    
    })
    

    第3引数の関数に注目してください!

    コールバック関数では「err(エラー情報)」「data(ファイルの中身)」を取得することができます。そのため、上記の例であれば「data」の中に「test.txt」の中身が格納されているわけです。

    また、「err」を例えばIF文などで条件分岐させればファイルが読み込めなかった時の処理も簡単に記述できるというわけです。

    「readFile」と「readFileSync」の違い

    前章ではファイルを読み込むのに「readFile()」を使いましたが、類似メソッドとして「readFileSync()」があります。この2つのメソッドは同様にファイルを読み込むことができます。

    では、一体何が違うのでしょうか?

    大きく異なるのは、「同期処理」「非同期処理」の違いです。「readFile()」が非同期処理で、「readFileSync()」が同期処理になります。

    つまり、非同期処理だとファイルを読み込んでいる最中にも処理が止まることなく別の作業を行えるので便利なわけです。この同期・非同期処理に関して、さらに詳しく学びたい場合は次の記事で解説しているので合わせて参考にしてみてください!

    「fs」のファイル操作

    この章では、ファイル読み込み以外の操作について見ていきましょう!

    主に、ファイルの作成・追記・削除について学んでいきます。

    「writeFile()」でファイルを新規作成する方法

    まずは、ファイルを新規作成する方法から見ていきましょう!

    利用するメソッドは「writeFile()」で、使い方についてはこれまで利用してきた「readFile()」と同じように使えます。

    fs.writeFile(ファイルのパス, ファイルの中身, コールバック関数)
    

    「ファイルのパス」はこれから新規に作成するファイル名とパスを記述します。「ファイルの中身」には新規作成と同時に文字列などを格納できますし、空文字にして空っぽのファイルを作ることも可能です。

    次のサンプル例を見てください!

    fs.writeFile('/test2.txt', 'サンプルの文字列', function(err) {})
    

    この例では、「test2.txt」というファイルを新規作成しています。コールバック関数には、正常にファイルが作成できなかった際のエラー情報が取得できます。

    ちなみに、すでに存在しているファイルを指定した場合は上書きとなるので注意しておきましょう!

    「appendFile()」でファイルに追記する方法

    次に、既存のファイルへ追記する方法について見ていきましょう!

    利用するメソッドは「appendFile()」で、新規作成する際の記述と非常によく似ているのが特徴です。

    fs.appendFile(ファイルのパス, 追記したいデータ,  コールバック関数)
    

    「ファイルのパス」に追記したいファイルを指定し、第2引数に文字列データなどを設定すればOKです。

    次のサンプル例を見てください!

    fs.appendFile('/test.txt', '追記したい文字列など', function(err) {})
    

    この例では、「test.txt」ファイルの中身に指定した文字列を追記しています。コールバック関数には正常に追記できなかった場合のエラー情報が取得できるようになっています。

    「unlink()」でファイルを削除する方法

    最後に、ファイルを削除する方法について見ていきましょう!

    利用するメソッドは「unlink()」で、指定したファイルを完全削除してくれます。

    fs.unlink(ファイルのパス, コールバック関数)
    

    使い方は非常に簡単で、削除したいファイルを指定するだけです。

    次のサンプル例を見てください!

    fs.unlink('/test.txt', function(err) {})
    

    この例では、「test.txt」ファイルを完全削除しています。注意点としては、実行すると即座に削除してしまうので事前に確認ダイアログなどのステップを挟むのが良いでしょう。

    コールバック関数には、正常に削除できなかった場合の情報が格納されています。

    まとめ

    今回は、Node.jsでファイル操作全般を行うことができる「fs」モジュールについて学習しました!

    最後に、もう一度ポイントをおさらいしておきましょう!

  • 「fs」モジュールを使うには最初にrequire()で利用できるように準備する
  • 各メソッドには同期・非同期が行えるものが混在しているので注意する
  • 一般的なファイルの読み込み・作成・上書き・追記・削除を行うことができる
  • 上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!

    この記事を書いた人

    フリーランスのIT系ライターを10年従事する兵庫県出身の40歳。侍ブログ編集部としては、これまで270記事以上を執筆。
    30歳を過ぎてから独学でJavaScript, Node.js, Linuxを習得した経験を活かし、初心者が迷わない記事作成を意識しながらプログラミングの楽しさを知ってもらうために活動しています。趣味はキャンプと登山です。

    目次