スライドショー

【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()」が同期処理になります。

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

    【JavaScript入門】誰でも分かるPromiseの使い方とサンプル例まとめ!
    更新日 : 2020年3月13日

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

    LINEで送る
    Pocket

    ITエンジニアへ転職したい方におすすめ

    自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
    エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

    しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

    こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

    そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

    侍ワークスは、独自案件を多く掲載しているだけでなく、

    ・応募から就業まで一貫したサポート

    ・就業後もアフターフォロー

    といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

    まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

    書いた人

    マサト

    マサト

    フリーランスのIT系ライターを8年従事。侍ブログ編集部としては、これまで270記事以上の記事を執筆。
    独学でJavaScript, Node.js, Linuxを3年学習。個人プロダクトのWebメディア・アプリ作成経験あり。