【问题标题】:how to prevent fs.writeFile from overwriting existing files?如何防止 fs.writeFile 覆盖现有文件?
【发布时间】:2018-10-24 17:59:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js fs


    【解决方案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');
    

    【讨论】:

    • 谢谢。虽然我正在为此寻找一些选项,但正如你提到的,我认为没有这样的选项可用。所以,这回答了我的问题。再次感谢:)
    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2012-11-20
    相关资源
    最近更新 更多