文件分隔符
/
左-> 正斜杠,\
右 -> 反斜杠
- 在mac, linux, unix 使用
/
分隔符 - 在win 使用
\
作为分隔符, 由于\
存在转义的效果,一般会使用\\
- win中也可以使用
/
- win中也可以使用
介绍path相关
- path.basename
- 获取一个路径的文件名(默认包含拓展名)
- path.basename(‘c:/a/b.js’) -> b.js
- path.basename(‘c:/a/b.js’, ‘.js’) -> b
- path.dirname
- 获取一个路径中的目录部分
- path.parse
- 把一个路径转换为对象
- root 根目录
- dir 目录
- base 包含后缀名的文件名
- ext后缀名
- name 不包含后缀名的文件名
- 把一个路径转换为对象
- path.join
- 需要进行路径拼接的时候推荐使用这个方法(极其智能)
- path.join(‘c:/a/b’, ‘c’) -> c:/a/b/c
- path.join(‘c:/a/b’, ‘/c’) -> c:/a/b/c
- path.join(‘c:/a/b’, ‘./c’) -> c:/a/b/c
- path.join(‘c:/a/b’, ‘…/c’) -> c:/a/c
- path.isAbsolute
- 判断是否是一个绝对路径
- path.isAbsolute(‘c://a’) -> true
- path.isAbsolute(’/a’) -> true (/为根目录)
__dirname
与 __filename
均是动态的获取, 他们是比较特殊的成员
__dirname
文件所属目录的绝对路径 c://a/b__filename
所属文件的绝对路径 c://a/b/c.js
fs模块中的相对路径
fs.readFile(’./a.txt’, fn)
- 其中的路径’./a.txt’ 并不是文件所在目录为寻找
- 是以终端,即node运行文件时目录
- c://a/b> node a.js
- c://a/> b/node a.js
- 虽然他们 看似相同,由于node运行目录不相同,fs.readFile时寻找不一样
- c://a/b/a.txt
- c://a/a.txt
- 这是专门的一种设计,并不是一种bug,所以建议修改目录为
fs.readFile(path.join(__dirname, './a.txt'), fn)
- 这样每次都是动态获取的,所以不会造成目录问题
- 注意引入
path
模块,一般,fs
,path
都是成对引入
require中的相对路径
- 在
require
中,不存在上述问题,还是引入即可, require(’./a’)- 省略模块后缀.js