web-dev-qa-db-ja.com

Node.jsで空のファイルを作成しますか?

今のところ私は

fs.openSync(filepath, 'a')

しかし、それは少しトリッキーです。 Node.jsで空のファイルを作成する「標準的な」方法はありますか?

65
Lai Yu-Hsuan

ファイルを強制的に空にする場合は、代わりに'w'フラグを使用します。

var fd = fs.openSync(filepath, 'w');

これにより、ファイルが存在する場合は切り捨てられ、存在しない場合は作成されます。

返されるファイル記述子が不要な場合は、fs.closeSync呼び出しでラップします。

fs.closeSync(fs.openSync(filepath, 'w'));
132
JohnnyHK

https://github.com/isaacs/node-touch はジョブを実行し、エミュレートするUNIXツールのように既存のファイルを上書きしません。

8
Kyle Mathews

UNIXタッチのようにしたい場合は、fs.openSync(filepath, 'a')を使用します。それ以外の場合、 'w'はファイルが既に存在する場合は上書きし、 'wx'は既に存在する場合は失敗します。しかし、ファイルのmtimeを更新したいので、「a」を使用して何も追加しません。

6
Nick Sotiros

非同期の方法は次のとおりです。"wx"したがって、既存のファイルでは失敗します。

var fs = require("fs");
fs.open(path, "wx", function (err, fd) {
    // handle error
    fs.close(fd, function (err) {
        // handle error
    });
});
5
silverwind