ファイルとディレクトリを作成する

完了

Tailwind Traders の開発者として、あなたは新しいファイルやディレクトリをプログラムで作成および削除する実践的な使い方を開始しようとしています。 これは、基幹業務アプリケーションの一般的な要件です。

ここまでは、fs モジュールを使用して、ファイルとディレクトリを操作する方法を学習しました。 また、fs モジュールを使用して、システム上のファイルとディレクトリをプログラムで作成、削除、コピー、移動、およびその他の操作を行うことができます。

fs.mkdir を使用してディレクトリを作成する

mkdir メソッドを使用して、ディレクトリを作成することができます。 次のメソッドにより、201 フォルダー内に newDir というフォルダーが作成されます。

const fs = require("fs").promises;
const path = require("path");

await fs.mkdir(path.join(__dirname, "stores", "201", "newDir"));

ファイル構造 /stores/201 が既に存在している必要があります。そうでないと、このメソッドは失敗します。 ファイル構造が存在しない場合にそれを作成する操作が必要な場合は、オプションの recursive フラグを渡すことができます。

await fs.mkdir(path.join(__dirname, "newDir", "stores", "201", "newDir"), {
  recursive: true
});

ディレクトリが存在することを確認する

作成しようとしているディレクトリが既に存在する場合、mkdir メソッドはエラーをスローします。 エラーが発生するとプログラムが突然停止するため、そのような状況は望ましくありません。 この状況を回避するために、Node.js では、ファイルまたはディレクトリを開いた後に操作する予定がある場合は (この場合のように)、mkdir メソッドを try/catch でラップすることが推奨されます。

const pathToCreate = path.join(__dirname, "stores", "201", "newDirectory");

// create the salesTotal directory if it doesn't exist
try {
  await fs.mkdir(salesTotalsDir);
} catch {
  console.log(`${salesTotalsDir} already exists.`);
}

fs.writeFile を使用してファイルを作成する

fs.writeFile メソッドを使用して、ファイルを作成することができます。 このメソッドは、ファイルへのパスと、ファイルに書き込むデータを受け取ります。 ファイルが既にある場合は、上書きされます。

たとえば、次のコードでは、"Hello World!" というテキストを含む greeting.txt という名前のファイルが作成されます。

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, "Hello World!");

最後のパラメーター (ファイルに書き込むデータ) を省略した場合、Node.js によってファイルに "undefined" が書き込まれます。 そのような状況は、望んでいることでは "ない" でしょう。 空のファイルを書き込むには、空の文字列を渡します。 さらに優れた方法は、String 関数を渡すことです。これにより、コード内に空の引用符を残すことなく、実質的に同じことが行われます。

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, String());

次の演習では、ファイルとディレクトリの作成方法についての知識を活かし、すべての sales ファイルの合計が格納されるディレクトリを作成するようにプログラムを拡張します。