📜  Node.js fs.rename() 方法

📅  最后修改于: 2022-05-13 01:56:41.882000             🧑  作者: Mango

Node.js fs.rename() 方法

fs.rename() 方法用于将给定旧路径处的文件异步重命名为给定新路径。如果它已经存在,它将覆盖目标文件。

句法:

fs.rename( oldPath, newPath, callback )

参数:此方法接受三个参数,如上所述,如下所述:

  • oldPath:它保存必须重命名的文件的路径。它可以是字符串、缓冲区或 URL。
  • newPath:它保存文件必须重命名的新路径。它可以是字符串、缓冲区或 URL。
  • callback:方法执行时调用的函数。它有一个可选参数,用于显示过程中发生的任何错误。

下面的示例说明了 Node.js 中的fs.rename() 方法

示例 1:此示例使用 fs.rename() 方法重命名文件。

// Node.js program to demonstrate the    
// fs.rename() method 
     
// Import filesystem module
const fs = require('fs');
   
// List all the filenames before renaming
getCurrentFilenames();
   
// Rename the file
fs.rename('hello.txt', 'world.txt', () => {
  console.log("\nFile Renamed!\n");
   
  // List all the filenames after renaming
  getCurrentFilenames();
});
   
// Function to get current filenames
// in directory
function getCurrentFilenames() {
  console.log("Current filenames:");
  fs.readdirSync(__dirname).forEach(file => {
    console.log(file);
  });
}

输出:

Current filenames:
hello.txt
index.js

File Renamed!

Current filenames:
index.js
world.txt

示例 2:此示例使用 fs.rename() 方法来演示文件重命名过程中的错误。

// Node.js program to demonstrate the    
// fs.rename() method 
     
// Import filesystem module
const fs = require('fs');
   
// List all the filenames before renaming
getCurrentFilenames();
   
// Rename the file
fs.rename('hello.txt', 'geeks.txt', (error) => {
  if (error) {
      
    // Show the error 
    console.log(error);
  }
  else {
  
    // List all the filenames after renaming
    console.log("\nFile Renamed\n");
   
    // List all the filenames after renaming
    getCurrentFilenames();
  }
});
   
// Function to get current filenames
// in directory
function getCurrentFilenames() {
  console.log("Current filenames:");
  fs.readdirSync(__dirname).forEach(file => {
    console.log(file);
  });
}

输出:

Current filenames:
index.js
package.json
world.txt
[Error: ENOENT: no such file or directory, rename 
'G:\tutorials\nodejs-fs-rename\hello.txt' ->
'G:\tutorials\nodejs-fs-rename\geeks.txt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'rename',
  path: 'G:\\tutorials\\nodejs-fs-rename\\hello.txt',
  dest: 'G:\\tutorials\\nodejs-fs-rename\\geeks.txt'
}

参考: https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback