0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Node.jsでファイルの読み書き

Posted at

fsモジュール

fsモジュールは、Node.jsでファイルの読み書きを行うための基本的な関数を提供するモジュール。
今回はこれを使用して基本的なファイル操作を試してみる。

同期形式と非同期形式

fsモジュールが提供しているすべてのメソッドには、非同期形式と同期形式が用意されている。
非同期処理を利用すると、処理の完了を待つことなく受付の完了のみを応答するため、エンドユーザーに対する応答性の改善や処理能力の改善を図ることができる (=メリットが多い)ため、処理内容が非同期処理でも問題ない処理であれば、非同期処理を選ぶと良いらしい。

事前準備

fsモジュールを呼び出しておく。

const fs = require("fs");

ファイルの内容を読み込む

ファイルの内容を読み込みたい場合は、readFileSyncメソッドを使えば実現できる。
ファイルの読み書きは存在の有無や権限、ファイルシステムの違いなどによって例外が発生しやすいので、必ずtry~catchでエラーハンドリングを行う。
文字コードを指定したい場合、第二引数で直接指定できる。今回はutf-8を指定。
同時に動作確認も行うため、今回は成功時、エラー時にそれぞれ結果を出力する。

try {
    const file = fs.readFileSync("example.txt", 'utf-8');
    console.log(file);
} catch (err) {
    console.log(err);
    // ファイルが読み込めないなどのエラーが発生したときに呼ばれる
}

ファイルに内容を書きこむ

ファイルに内容を書きこみたい場合は、writeFileSyncを使用する。
使い方はfs.writeFileSync(書き出すファイルパス, データ)の形。
同じ階層にtextの内容が書き込まれたoutput.txtが作成されていれば成功。

try {
  let text = "この内容がoutput.textファイルに出力される";
  const file = fs.writeFileSync("output.txt", text);
} catch (err) {
  console.log(err);
  // ファイルが読み込めないなどのエラーが発生したときに呼ばれる
}

ファイルに内容を追記する

置き換えるのではなく追記したい場合に行う処理。
appendFileSyncメソッドを使用する。
※ファイル名を間違えて存在しないファイル名を指定してしまった場合、エラーにならず新規ファイルとして作成されてしまうので注意。

try {
  const appendFile = fs.appendFileSync('output.txt', '\nこれは追記です。','utf8');
} catch (err) {
  console.log(err);
}

ファイルを削除する

unlinkSyncメソッドを使用することで、ファイルの削除が可能。
上の、ファイルに内容を追記するの動作時に、ファイル名を間違えてoutput.textを作ってしまったと仮定して、これを削除する。

try {
  const deletefile = fs.unlinkSync('output.text');
} catch (err) {
  console.log(err);
  // ファイルが存在しないなどのエラーが発生したときに呼ばれる
}
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?