如何防止fs.writeFile覆盖现有文件?

时间:2018-10-24 09:35:16

标签: javascript node.js fs

我正在从swagger API定义文件创建测试文件。我使用fs.writeFile创建测试文件(大部分是存根,因此我需要手动向这些文件添加详细信息)。现在的问题是,每当我再次生成测试文件时,它也会覆盖所有现有文件。

所以,我的问题是,fs.writeFile是否有一些选项可以设置为指定文件是否已经存在而不覆盖它?

最明显的方法似乎是先检查文件是否存在,然后仅在文件不存在时才生成文件。但是,如果fs.writeFile本身有一些选择,那将更加方便和紧凑。

1 个答案:

答案 0 :(得分:1)

fs.writeFile 没有任何检查文件是否已存在的选项。

我建议使用fs-extra。以下是解决方法之一。

async function writeFile(f) {
    try {
        if ((await fs.pathExists(f)) === false) {
            await fs.outputFile(f, 'hello!');
        }
    } catch (err) {
        console.error(err);
    }
}

writeFile('/tmp/this/path/does/not/exist/file.txt');