目录
1 路径问题
2 直接给绝对路径
3 用 __dirname 表示绝对路径
4 path模块常用方法
4.1 路径拼接 path.join()
4.2 从路径字符串中解析出文件名 path.basename()
4.3 获取路径中的扩展名 path.extname()
1 路径问题
当我们使用 ./ 或是 ../ 表示相对路径的时候有时会出问题
我现在的路径结构是这样的,我当前想在 1.路径问题.js 读取 成绩.txt
那么我应该这样写
在代码所在的文件夹中执行代码发现没有问题
但当我们不在代码所处的文件夹中执行,发现出现了问题
这是因为在node中,相对路径就是用执行路径拼接的,第一次使用的是 代码所在的路径 进行拼接所以没有问题,第二次使用 不是代码所在的路径 所以拼接有问题。你看它的错误信息就理解这个问题了
我们有下面几种解决方式
2 直接给绝对路径
这样在哪一级目录下读取都没有问题
3 用 __dirname 表示绝对路径
像上面直接给绝对路径会使代码的移植性很差且不利于维护,我们可以用 __dirname 表示绝对路径
__dirname 表示当前文件所处的目录,__filename 表示当前文件的目录及文件名,我们打印出来看一下
- __dirname与__filename在使用前不需要引入任何模块,他们的返回值都是字符串
只使用__dirname有个缺点就是没办法直接向上翻,因为字符串的拼接会不做任何处理的拼 ./ ../ 这些东西
想解决这个问题就要使用到path模块了
4 path模块常用方法
使用前需要先引入path模块
4.1 路径拼接 path.join()
path.join()可以传入任意多个路径作为参数
path.join()的返回值是字符串
使用path.join()之后我们就可以借助__dirname向上翻了
发现无论在哪一个路径下都可以成功读取
4.2 从路径字符串中解析出文件名 path.basename()
- path是文件的路径
- ext是文件的扩展名
如果引入了basename的第二次参数扩展名,那么就会返回不带扩展名的文件名