Создайте пустой файл в узле.Джей?


сейчас я использую

fs.openSync(filepath, 'a')

но это немного сложнее. Есть ли "стандартный" способ создать пустой файл в узле.Джей?

4 58

4 ответа:

если вы хотите, чтобы файл будет пустым, то вы хотите использовать флаг:

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

что удалит файл, если он существует и создать его, если это не так.

оберните его в fs.closeSync звоните, если вам не нужен дескриптор файла, она возвращает.

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

https://github.com/isaacs/node-touch будет выполнять эту работу и, как инструмент UNIX, который он эмулирует, не будет перезаписывать существующий файл.

Если вы хотите, чтобы это было так же, как Unix touch я бы использовал то, что у вас есть fs.openSync(filepath, 'a') в противном случае 'w' перезапишет файл, если он уже существует, и 'wx' потерпит неудачу, если он уже существует. Но вы хотите обновить mtime файла, поэтому используйте "a" и ничего не добавляйте.

вот асинхронный способ, используя "wx" поэтому он не работает на существующих файлах.

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