当前位置:  开发笔记 > 编程语言 > 正文

如何不在node.js中覆盖文件

如何解决《如何不在node.js中覆盖文件》经验,为你挑选了1个好方法。

如果文件存在而不是覆盖它,我想让这段代码更改文件名.

var fileName = 'file';

fs.writeFile(fileName + '.txt', 'Random text', function (err) {
  if (err) throw err;
  console.log('It\'s saved!');
});

就像是:

var fileName = 'file',
    checkFileName = fileName,
    i = 0;

while(fileExists(checkFileName + '.txt')) {
  i++;
  checkFileName = fileName + '-' + i;
} // file-1, file-2, file-3...

fileName = checkFileName;

fs.writeFile(fileName + '.txt', 'Random text', function (err) {
  if (err) throw err;
  console.log('It\'s saved!');
});

我如何制作"fileExists"函数,考虑到fs.exists()现在已弃用,fs.statSync()或者fs.accessSync()如果文件不存在则抛出错误.也许有更好的方法来实现这一目标?



1> Fabian Schmi..:

使用writeFile第三个参数设置为{flag: "wx"}(有关标志的概述,请参见fs.open).这样,它在文件已经存在时失败,并且它还避免了在existswriteFile调用之间创建文件的可能竞争条件.

在已存在的情况下以不同名称写入文件的示例代码.

fs = require('fs');


var filename = "test";

function writeFile() {
  fs.writeFile(filename, "some data", { flag: "wx" }, function(err) {
    if (err) {
      console.log("file " + filename + " already exists, testing next");
      filename = filename + "0";
      writeFile();
    }
    else {
      console.log("Succesfully written " + filename);
    }
  });

}
writeFile();

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有