介绍

你是在 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():

1const fs = require("fs") 2const path = require("path") 3 4const pathToFile = path.join(__dirname, "your-file.png") 5const newPathToFile = path.join(__dirname, "new-filename.png") 6 7fs.rename(pathToFile, newPathToFile, function(err) { 8  if (err) { 9    throw err10  } else {11    console.log("Successfully renamed the file!")12  }13})

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

  1. 首先,导入 Fs 模块和 Path 核心模块。

  2. 接下来创建 pathToFile 和 newPathToFile 变量。我们使用 Path 模块来获取想要更改的文件的当前路径。我们还创建了一个路径,其中包含希望新文件具有的名称。

  3. 然后,我们使用 fs.rename() 函数。将两个文件路径传递给函数,并返回一个回调。

  4. 在回调函数中,我们做了一些错误处理,如果成功就 console.log() 成功消息。

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

1$ Successfully renamed the file!

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

接下来介绍同步版本。

fs.renameSync():

 1const fs = require("fs") 2const path = require("path") 3const pathToFile = path.join(__dirname, "your-file.png") 4const newPathToFile = path.join(__dirname, "new-filename.png") 5 6try { 7  fs.renameSync(pathToFile, newPathToFile) 8  console.log("Successfully renamed the file!") 9} catch(err) {10  throw err11}

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

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

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

1$ Successfully renamed the file!

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

结论

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

原文:https://coderrocketfuel.com/article/how-to-rename-a-system-file-using-node-js

©著作权归作者所有:来自51CTO博客作者mb5ff980b461ced的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 用 await/async 正确链接 Javascript 中的多个函数[每日前端夜话
  2. Linux学习:unix的标准化的实现(Linux中各种限制-数据类型-各种标准
  3. Linux学习:文件IO(不带缓冲区),原子操作概念
  4. 从.env文件中为NodeJS加载环境变量[每日前端夜话0xA9]
  5. Centos给文件设置了777权限仍不能访问解决方案
  6. 用原生 JavaScript 实现十大 jQuery 函数[每日前端夜话0x94]
  7. 如何设计一个牛逼的文件搬运工?
  8. shell脚本之灵活调用函数技巧
  9. 共享文件夹

随机推荐

  1. Android’s HTTP Clients
  2. Android jni知识点
  3. 【Android】Android Studio百问
  4. android 学习笔记(三)
  5. android EditText 去掉焦点
  6. android存储空间的分类
  7. Android framework系统手势
  8. Android 权限
  9. Android(安卓)开发简介
  10. android_shape