ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
##path - 在文件操作的过程中,都”必须”使用物理路径(绝对路径) - path 模块提供了一系列与路径相关的 API + path.join([p1][,p2][,p3]…) => 连接多个路径 + path.basename(p, ext) => 获取文件名 + path.dirname(p) => 获取文件夹路径 + path.extname(p) => 获取文件扩展名 + path.format(obj) 和 path.parse(p) + path.relative(from, to) => 获取从 from 到 to 的相对路径 - 源码地址: https://github.com/nodejs/node/blob/master/lib/path.js - API地址 http://nodejs.org/api/path.html ##path模块使用 路径操作,非文件操作,所以无需path路径是否存在 ```js // PATH模块的使用 const path = require('path'); const temp = path.join(__dirname, './../测试文件.txt'); ``` - path.basename(p[, ext]) ```js //语法: path.basename(p[, ext]) // 获取文件名 console.log(path.basename(temp)); // 获取文件名without扩展名 console.log(path.basename(temp, 'txt')); ``` 结果: ``` 测试文件.txt 测试文件 ``` - path.delimiter ```js //语法: path.delimiter // 获取不同操作系统中默认的路径分隔符 Windows是; Linux是: console.log(path.delimiter); // 获取环境变量 console.log(process.env.PATH.split(path.delimiter)); ``` 结果: ``` : [ '/usr/lib/jvm/java/bin', '/usr/lib/jvm/java/bin', '/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games' ] ``` - path.dirname(p) ```js //语法: path.dirname(p) // 获取文件目录名称 console.log(path.dirname(temp)); ``` - path.extname(p) ```js // 语法:path.extname(p) // 获取指定文件的扩展名,包含. console.log(path.extname(temp)); ``` 结果 ``` .txt ``` - path.parse(pathString) ```js //语法: path.parse(pathString) // 将一个路径字符串转换为一个对象(包含文件目录,文件名,扩展名) var obj = path.parse(temp); console.log(obj); ``` 结果: ```js { root: '/', dir: '/media/revin/WININSTALL/3/新建文件夹', base: '测试文件.txt', ext: '.txt', name: '测试文件' } ``` - path.format(pathObject) ```js //语法: path.format(pathObject) // 将路径对象转字符串 var obj = path.parse(temp); console.log(path.format(obj)); ``` 结果: ``` /media/revin/WININSTALL/3/新建文件夹/测试文件.txt ``` - path.isAbsolute(path) ```js // 语法: path.isAbsolute(path) //判断路径是否是绝对路径 // // true console.log(path.isAbsolute(temp)); // // false console.log(path.isAbsolute('../temp/1.txt')); ``` - path.join([path1][, path2][, ...]) ```js // 语法: path.join([path1][, path2][, ...]) // 拼合路径组成 console.log(path.join(__dirname, '..', './temp', 'a', '../../1.txt')); console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); ``` 结果: ``` /media/revin/WININSTALL/3/新建文件夹/1.txt /foo/bar/baz/asdf ``` - path.normalize(p) ```js //语法: path.normalize(p) // 常规化一个路径(为windows设计) var a = path.normalize('C:/dev\\abc//cba////1.txt'); console.log(a); ``` 结果: ``` C:/dev\abc/cba/1.txt ``` - path.relative(from, to) ```js // 语法:path.relative(from, to) console.log(path.relative(__dirname,'/media/revin/WININSTALL/3/新建文件夹/code/0122.js')); // 获取to 相对于from的相对路径 ``` 结果: 因为 当前路径是/media/revin/WININSTALL/3/新建文件夹/code/,to 相对于from的相对路径是 ``` 0122.js ``` - path.resolve([from ...], to) ```js //语法: path.resolve([from ...], to) // console.log(path.resolve(__dirname, '..', './', './code')); // 与join不同(resolve会执行cd /tmp到目录) console.log(path.resolve(__dirname, '/tmp', './', './code')); console.log(path.join(__dirname, '/tmp', './', './code')); ``` 结果: ``` /media/revin/WININSTALL/3/新建文件夹/code /tmp/code /media/revin/WININSTALL/3/新建文件夹/code/tmp/code ``` - path.sep ``` // path.sep // 获取当前操作系统中默认用的路径成员分隔符 windows:\ linux:/ console.log(path.sep); ``` 结果: ``` / ``` - path.win32 - path.posix ```js // 根据操作系统决定 //path.win32 // 允许在任意操作系统上使用windows的方式操作路径 path === path.win32 // 允许在任意操作系统上使用Linux的方式操作路径 // path.posix path === path.posix ```