Node.js中的路径操作模块path
提供了一组API,用于处理文件路径。它可以将相对路径或绝对路径解析为完整的路径字符串,让路径操作更加简单、方便和可靠。
path路径操作模块
以下是路径模块中一些常用的方法和属性:
path.basename(path[, ext])
:返回路径中的文件名部分。可选的第二个参数ext
可以指定要排除的扩展名。- path.dirname:获取路径中的目录部分
- path.extname:获取一个路径中的扩展名部分
- path.parse:把路径转换为对象
- root:根路径
- dir:目录
- base:包含后缀名的文件名
- ext:后缀名
- name:不包含后缀名的文件名
path.join([...paths])
:将多个路径拼接起来,返回一个完整的路径字符串。- path.isAbsolute:判断一个路径是否为绝对路径!
path.sep
:返回当前操作系统使用的路径分隔符。path.resolve([...paths])
:将相对路径或绝对路径解析为完整的绝对路径字符串。
使用路径模块提供的API可以避免手动拼接路径所带来的一些低级错误,提高代码的可读性和可移植性。例如,在使用Node.js操作文件时,需要指定文件的完整路径,而路径分隔符在不同的操作系统中不同,如果手动拼接路径,代码可移植性较差,而使用路径模块提供的API可以避免这个问题。
除了path
模块,还有两个特殊的成员__dirname
和__filename
。在每个模块中,它们都是一个成员,可以用来动态获取当前文件模块所属目录的绝对路径和当前文件的绝对路径(包含文件名)。它们不受执行node命令所属路径影响,因此可以解决在文件操作中使用相对路径不可靠的问题。
Node中的其它成员(__dirname,__filename)
在每个模块中,除了require
,exports
等模块相关的API之外,还有两个特殊的成员:
-
__dirname
,是一个成员,可以用来动态获取当前文件模块所属目录的绝对路径 -
__filename
,可以用来动态获取当前文件的绝对路径(包含文件名) -
__dirname
和filename
是不受执行node命令所属路径影响的
在文件操作中,使用相对路径是不可靠的,因为node中文件操作的路径被设计为相对于执行node命令所处的路径。
所以为了解决这个问题,只需要把相对路径变为绝对路径(绝对路径不受任何影响)就可以了。
就可以使用__dirname
或者__filename
来帮助我们解决这个问题
在拼接路径的过程中,为了避免手动拼接带来的一些低级错误,推荐使用path.join()
来辅助拼接
代码示例:
var fs = require('fs');
var path = require('path');
// console.log(__dirname + 'a.txt');
// path.join方法会将文件操作中的相对路径都统一的转为动态的绝对路径
fs.readFile(path.join(__dirname + '/a.txt'),'utf8',function(err,data){
if(err){
throw err
}
console.log(data);
});
补充:模块中的路径标识和这里的路径没关系,不受影响(就是相对于文件模块)
注意:
模块中的路径标识和文件操作中的相对路径标识不一致
模块中的路径标识就是相对于当前文件模块,不受node命令所处路径影响
以下是路径模块中一些常用的方法和属性:
path.join([...paths])
:将多个路径拼接起来,返回一个完整的路径字符串。path.resolve([...paths])
:将相对路径或绝对路径解析为完整的绝对路径字符串。path.basename(path[, ext])
:返回路径中的文件名部分。可选的第二个参数ext
可以指定要排除的扩展名。path.dirname(path)
:返回路径中的目录名部分。path.extname(path)
:返回路径中的文件扩展名部分。path.sep
:返回当前操作系统使用的路径分隔符。
使用路径模块提供的API可以避免手动拼接路径所带来的一些低级错误,提高代码的可读性和可移植性。例如,在使用Node.js操作文件时,需要指定文件的完整路径,而路径分隔符在不同的操作系统中不同,如果手动拼接路径,代码可移植性较差,而使用路径模块提供的API可以避免这个问题。
除了path
模块,还有两个特殊的成员__dirname
和__filename
。在每个模块中,它们都是一个成员,可以用来动态获取当前文件模块所属目录的绝对路径和当前文件的绝对路径(包含文件名)。它们不受执行node命令所属路径影响,因此可以解决在文件操作中使用相对路径不可靠的问题。
在拼接路径的过程中,为了避免手动拼接带来的一些低级错误,可以使用path.join()
方法辅助拼接。同时,需要注意模块中的路径标识和文件操作中的相对路径标识不一致,模块中的路径标识是相对于当前文件模块,不受node命令所处路径影响。
总之,路径模块是Node.js中一个非常实用的模块,它提供了一组API用于处理文件路径。熟练掌握路径模块的使用可以提高开发效率,并避免由于路径拼接不当而导致的错误。
总结和思考
在 Node.js 中,路径模块是一个非常重要的模块,用于处理文件路径。该模块提供了一组 API,用于将相对路径或绝对路径解析为完整的路径字符串。
以下是路径模块中一些常用的方法和属性:
- path.join([…paths]):将多个路径拼接起来,返回一个完整的路径字符串。
- path.resolve([…paths]):将相对路径或绝对路径解析为完整的绝对路径字符串。
- path.basename(path[, ext]):返回路径中的文件名部分。可选的第二个参数 ext 可以指定要排除的扩展名。
- path.dirname(path):返回路径中的目录名部分。
- path.extname(path):返回路径中的文件扩展名部分。
- path.sep:返回当前操作系统使用的路径分隔符。
路径模块的常用方法可以简化我们在读取和处理文件时的路径操作。例如,在使用 Node.js 操作文件时,经常需要指定文件的完整路径。在 Windows 和 Linux 等操作系统中,路径分隔符不同,如果手动拼接路径,代码可移植性较差。因此,使用路径模块提供的 API 可以避免这个问题。
总之,路径模块是 Node.js 中一个非常实用的模块,它提供了一组 API 用于处理文件路径。熟练掌握路径模块的使用可以提高我们的开发效率,并避免由于路径拼接不当而导致的错误。
原文链接:https://juejin.cn/post/7225417053842751543 作者:泽林阿