使用Node.js的fs模块操作文件之文件、目录的重命名(移动)与删除

 2015年10月30日    3604     声明


fs模块中提供了重命名(移动)文件或目录方法:fs.rename(),删除文件的方法:fs.unlink(),删除目录的方法:fs. rmdir()。这几个方法都有对应的同步版本方法:fs.renameSync()fs.unlinkSync()fs.rmdirSync()fs模块中的所有方法,都更推荐使用其同步版本,因为在任务量较大时同步版本会造成进程阻塞。另外,同步版本的方法需要使用trytry进行异常捕获,在使用上没有异步方法便利。


1. 文件、目录的重命名(移动):fs.rename()

fs.rename(oldPath, newPath, callback)

这是异步版本的方法,此方法可以用于文件重命名和移动文件位置,此方法也可用于目录的操作。其回调函数中包含一个参数(err),该参数用于捕获可能出现的异常,当操作的文件或目录不存在、目标目录不存在等情况时会出现异常。

fs.rename('./xxx.txt', '/tmp/world', function (err) {
    if (err) throw err;
    console.log('重命名完成');
});


fs.unlink(path, callback)

这是一个异步的删除文件的方法。其回调函数中包含一个参数(err),该参数用于捕获可能出现的异常,当操作的文件不存在、操作的对象是目录等情况时会出现异常。

fs.unlink('./itbilu.com.txt', function(err) {
    if (err) throw err;
    console.log('文件删除成功');
});


3. 目录的删除:fs.rmdir()

fs.rmdir(path, callback)

fs.unlink()只能用于文件的删除,当需要删除目录时,需要使用fs.rmdir()方法。其回调函数中包含一个参数(err),该参数用于捕获可能出现的异常,当操作的目录不存在、操作的对象是文件、操作目录非空等情况时会出现异常。

fs.rmdir('/tmp/itbilu', function(err) {
    if (err) throw err;
    console.log('目录删除成功');
});


对文件、目录进行移动或删除时,建议先对先判断操作对象是否存在和是否有操作权限,以避免出现异常,请参考:fs检查文件是否存在

跨目录操作时,有时会进行相对/绝对路径的转换等,请参考:Node.js使用path模块处理文件路径