011 nodejs服务端:使用FS模块对文件重命名、文件复制、文件移动

nodejs服务端:文件重命名、文件复制、文件移动

在nodejs服务端对文件进行操作一般都使用到fs模块,今天我也在项目中使用到了,之前一直没机会写文档,现在我做一个小总结!

安装必要模块

npm i fs -s

文件重命名demo

var fs = require('fs')
fs.rename(`upload/${file.filename}`, `upload/${newname}`, (err) => {
        if (err) {
          console.log('err:' + err);
        } else {
          console.log('修改文件名成功');
        }
});

文件拷贝demo

var floder_path = 'one'
      if (order.print_type != '黑白A4单面') {
        floder_path = 'two'
      }
      if (order.print_num > 1) {
        for (var i = 1; i <= order.print_num; i++) {
          fs.copyFile(`upload/${newname}`, `upload/${floder_path}/第${i}份-共${order.print_num}份-${newname}`, function (err) {
            if (err) console.log('something wrong was happened')
            else console.log('copy file succeed');
          })
        }
      } else {
        fs.copyFile(`upload/${newname}`, `upload/${floder_path}/${newname}`, function (err) {
          if (err) console.log('something wrong was happened')
          else console.log('copy file succeed');
        })
      }

以上是从我的项目中截取的两个代码片段,官方给出的用法如下:

FS模块用法

fs.rename(oldPath, newPath, callback)

异步地将 oldPath 上的文件重命名为 newPath 提供的路径名。 如果 newPath 已存在,则覆盖它。 除了可能的异常,完成回调没有其他参数。

fs.rename('旧文件.txt', '新文件.txt', (err) => {
  if (err) throw err;
  console.log('重命名完成');
});

fs.copyFile(src, dest[, flags], callback)

异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。
flags 是一个可选的整数,指定拷贝操作的行为。 可以创建由两个或更多个值按位或组成的掩码(比如 fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)。

  • fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
  • fs.constants.COPYFILE_FICLONE -
    拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。
  • fs.constants.COPYFILE_FICLONE_FORCE -
    拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。
const fs = require('fs');

// 默认情况下将创建或覆盖目标文件。
fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
  if (err) throw err;
  console.log('源文件已拷贝到目标文件');
});

如果第三个参数是数字,则它指定 flags:

const fs = require('fs');
const { COPYFILE_EXCL } = fs.constants;

// 通过使用 COPYFILE_EXCL,如果目标文件存在,则操作将失败。
fs.copyFile('源文件.txt', '目标文件.txt', COPYFILE_EXCL, callback);

fs.copyFile Node.js中文网

posted @ 2019-10-12 00:57  南风S  阅读(482)  评论(0)    收藏  举报