path 相关的一些api, 我们首先创建一段公共的代码块 :
"use strict";
const path = require('path');
let _path = path.join(__dirname,'test.txt');
// 假设上面是我们的文件路径 ,具体为:/foo/bar/test.txt 这是*nix上的示例路径
path.basename (文件名)
console.log(path.basename(_path)); // test.txt 此处包含后缀 console.log(path.basename(_path,'.txt')); // test 此处不包含后缀path.delimiter (分隔符)
在*nix系统上的环境变量为:, 如下举例子:console.log(process.env.PATH) // '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin' process.env.PATH.split(path.delimiter) // returns ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']在window上的环境变量是
;举例如下:console.log(process.env.PATH) // 'C:\Windows\system32;C:\Windows;C:\Program Files\node\' process.env.PATH.split(path.delimiter) // returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']path.dirname (输出文件所在文件夹路径)
console.log(path.dirname(_path)); // /foo/barpath.extname (输出文件后缀)
console.log(path.extname); // .txt // 还有几个特殊的举例: path.extname('index.') // 输出 '.' path.extname('index') // 输出 '' path.extname('.index') // 输出 '' 此处需要警惕不是 '.index'path.format 路径格式化
// 此处只针对*nix文件系统路径 var json = { root : "/", dir : "/home/user/dir", base : "file.txt", ext : ".txt", name : "file" }; let res = path.format(json); console.log(res); // /home/user/dir/file.txtpath.isAbsolute (是否是绝对路径)
path.isAbsolute(_path); // true // *nix 下 path.isAbsolute('/foo/bar') // true path.isAbsolute('/baz/..') // true path.isAbsolute('qux/') // false path.isAbsolute('.') // false // windows 下 path.isAbsolute('//server') // true path.isAbsolute('C:/foo/..') // true path.isAbsolute('bar\\baz') // false path.isAbsolute('.') // falsepath.join (只能是字符串拼成的路径)
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') // returns '/foo/bar/baz/asdf' path.join('/foo', 'bar', 'baz/asdf', 'hello','t.txt'); // returns '/foo/bar/baz/asdf/hello/t.txt'path.normalize (使路径正常化,处理
..和.以及多余的/)path.normalize('/foo/bar//baz/asdf/quux/..') // returns '/foo/bar/baz/asdf'path.parse (解析字符串路径成对象)
// *nix 下 path.parse('/home/user/dir/file.txt') /* // returns { root : "/", dir : "/home/user/dir", base : "file.txt", ext : ".txt", name : "file" } */ // windows 下 path.parse('C:\\path\\dir\\index.html') /* // returns { root : "C:\\", dir : "C:\\path\\dir", base : "index.html", ext : ".html", name : "index" } */path.posix
Provide access to aforementioned path methods but always interact in a posix compatible way.
官方文档上说了: 提供接入path的方法,但总能够以可移植的适配方式来交互。
具体用法可在repl环境中输出这个path.posix对象来尝试。path.relative (获取一个路径对于另一个的相对路径)
// windows 下 path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb') // returns '..\\..\\impl\\bbb' // *nix 下 path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb') // returns '../../impl/bbb'path.resolve(通过一些路径参数,最终获得一个绝对路径,通过下面例子来说明)
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile') // returns /tmp/subfile上面获得的结果相当于下面的shell命令获得的路径 , 最终都是
/temp/subfilecd foo/bar cd /tmp/file/ cd .. cd a/../subfile pwd和 shell 命令的不同之处是 resolve 可以是不存在的,也可以是文件,如下:
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif') // if currently in /home/myself/node, it returns // '/home/myself/node/wwwroot/static_files/gif/image.gif'path.sep (获取相应操作系统上的文件分隔符)
// on *nix: 'foo/bar/baz'.split(path.sep) // returns ['foo', 'bar', 'baz'] // on Windows: 'foo\\bar\\baz'.split(path.sep) // returns ['foo', 'bar', 'baz']path.win32 (此API不常用)
Provide access to aforementioned path methods but always interact in a win32 compatible way.
提供接入上述path方法,但总在win32系统上以适配的方式交互。(存在局限性,不常用)
1万+



被折叠的 条评论
为什么被折叠?



