9
作者:Nick Major

翻译:疯狂的技术宅

原文:https://coderrocketfuel.com/a...

未经允许严禁转载

介绍

你是在 Node.js 中操作系统文件,并且需要一种简单的方法来以编程方式重命名文件?

幸运的是 Node.js 的文件系统 (Fs) 核心模块实现了内置的方法,可以通过 fs.renam()fs.renameSync() 方法来给文件一个新名字。

这两个函数都会给你相同的结果,只不过是用了两种不同的方式去做。同步 fs.renameSync() 版本将阻塞你的代码并等待文件成功重命名或发生错误然后再继续运行。异步版本fs.rename()不会阻塞你的代码,而是在删除文件时返回一个回调函数。

下面将向你展示如何使用这两种方法。

要使下面的代码生效,请确保安装了Node.js,并把要重命名的文件放在项目目录的根目录中。在这个例子中,我们的文件是一个名为 "your-file.png" 的PNG图像文件。当然重命名方法适用于任何文件类型。

First, let's cover the fs.rename() version. We'll give you the full code and then explain all the different parts afterward:

首先介绍 fs.rename() 版本。我们将为你提供完整的代码,然后进行解释:

fs.rename():

const fs = require("fs")
const path = require("path")

const pathToFile = path.join(__dirname, "your-file.png")
const newPathToFile = path.join(__dirname, "new-filename.png")

fs.rename(pathToFile, newPathToFile, function(err) {
  if (err) {
    throw err
  } else {
    console.log("Successfully renamed the file!")
  }
})

让我们分解代码的每个部分:

  1. 首先,导入 Fs 模块和 Path 核心模块。
  2. 接下来创建 pathToFilenewPathToFile 变量。我们使用 Path 模块来获取想要更改的文件的当前路径。我们还创建了一个路径,其中包含希望新文件具有的名称。
  3. 然后,我们使用 fs.rename() 函数。将两个文件路径传递给函数,并返回一个回调。
  4. 在回调函数中,我们做了一些错误处理,如果成功就 console.log() 成功消息。

在终端中运行代码时,你应该看到以下输出:

$ Successfully renamed the file!

如果查看文件所在的目录,你应该看到文件被重新命名。

接下来介绍同步版本。

fs.renameSync():

const fs = require("fs")
const path = require("path")
const pathToFile = path.join(__dirname, "your-file.png")
const newPathToFile = path.join(__dirname, "new-filename.png")

try {
  fs.renameSync(pathToFile, newPathToFile)
  console.log("Successfully renamed the file!")
} catch(err) {
  throw err
}

与前面的例子类似,我们需要 FsPath 核心模块。然后获取当前文件的路径,并创建一个路径,其中包含我们想要的新文件名。

但后面我们用了 try...catch 语句。在 try 部分,将 pathToFilenewPathToFile 变量传递给 fs.renameSync() 函数,并在成功重命名文件时记录成功消息。用 catch 抛出可能会发生的任何错误。

在终端中运行代码时,你应该看到与以前相同的输出:

$ Successfully renamed the file!

And the file in your directory will have a new name.
并且目录中的文件将具有新名称。

结论

Node.js 的文件系统(Fs)核心模块还有很多有用的方法。 可以通过查看文档获取更多信息


本文首发微信公众号:前端先锋

欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章

欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章

欢迎继续阅读本专栏其它高赞文章:



疯狂的技术宅
44.4k 声望39.2k 粉丝