首页 > 解决方案 > 如何防止 fs.writeFile 覆盖现有文件?

问题描述

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

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

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

标签: javascriptnode.jsfs

解决方案


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');

推荐阅读