在Node.js中创建一个空文件?

Lai*_*uan 70 filesystems node.js

现在我用

fs.openSync(filepath, 'a')
Run Code Online (Sandbox Code Playgroud)

但这有点棘手.是否有一种在Node.js中创建空文件的"标准"方法?

Joh*_*yHK 138

如果要强制文件为空,则需要使用该'w'标志:

var fd = fs.openSync(filepath, 'w');
Run Code Online (Sandbox Code Playgroud)

如果文件存在,那将截断该文件,如果不存在则创建它.

fs.closeSync如果您不需要它返回的文件描述符,请将其包含在调用中.

fs.closeSync(fs.openSync(filepath, 'w'));
Run Code Online (Sandbox Code Playgroud)

  • fs.writeFileSync('空.txt', ''); (7认同)
  • 您可能会在这里看到比`w`标志更多的选项https://nodejs.org/api/fs.html#fs_file_system_flags (2认同)

Kyl*_*ews 8

https://github.com/isaacs/node-touch将完成这项工作,就像它模拟的UNIX工具一样,不会覆盖现有文件.

  • `node-touch`对`fs.closeSync(fs.openSync(filepath,'a'))有什么好处;``除了更新现有文件的时间戳之外? (3认同)

Nic*_*ros 7

如果你想要它就像UNIX触摸我会使用你所拥有的,fs.openSync(filepath, 'a')否则'w'将覆盖文件,如果它已经存在,'wx'将失败,如果它已经存在.但是你想要更新文件的mtime,所以使用'a'并且什么也不添加.


sil*_*ind 6

这是异步方式,使用"wx"它在现有文件上失败.

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

  • @NickSotiros所以文件没有被覆盖,一些用例可能需要这样. (10认同)