//下面以windows环境为例varpath=require('path');console.log('module.filename='+module.filename+'');console.log('__filename='+__filename+'');console.log('__dirname='+__dirname+'');console.log('process.cwd()='+process.cwd()+'');console.log('require.main.filename='+require.main.filename+'');/*module.filename:开发时,这行代码所在的文件。E:testdemolibtest.js__filename:始终等于module.filename。E:testdemolibtest.js__dirname:开发时,这行代码所在的目录。E:testdemolib\process.cwd():运行node的工作目录,可以使用cd/d修改工作目录。E:testdemo\require.main.filename:以node命令开头的模块的文件名,比如nodexxx,这里的文件名就是这个xxx。NODE启动的是path.dirname:output:/tmp/demo/js*/varfilepath='/tmp/demo/js/test.js';console.log(path.dirname(filepath));//输出:/tmp/demo/jsconsole.log(path.basename('/tmp/demo/js/test.js'));//输出:test.jsconsole.log(path.basename('/tmp/demo/js/test/'));//输出:testconsole.log(path.basename('/tmp/demo/js/test'));//输出:testconsole.log(path.basename('/tmp/demo/js/test.js','.js'));//输出:test获取文件名//path.extnameconsole.log(path.extname(filepath));//输出:.js获取文件扩展名;//path.extname是从最后截取的。到最后一个字符;如果。B中不存在或B的第一个字符为.,则返回空字符串。path.extname('index.html')//返回'.html'path.extname('index.coffee.md')//返回'.md'path.extname('index.')//返回'.'path.extname('index')//返回''path.extname('.index')//返回''//path.jsonconsole.log(path.join('/foo','bar','baz/asdf','quux','..'));//输出'/foo/bar/baz/asdf'//path.resolve//示例:path.resolve('/foo/bar','./baz')类似于先输入cd/foo/bar再输入cd./baz//假设当前工作路径为/Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathconsole.log(path.resolve(''))//输出/Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathconsole.log(path.resolve('.'))//输出/Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathconsole.log(path.resolve('/foo/bar','baz'));//输出/foo/bar/bazconsole.log(path.resolve('/foo/bar','./baz'));//输出/foo/bar/bazconsole.log(path.resolve('/foo/bar','./baz/'));//输出/foo/bar/bazconsole.log(path.resolve('/foo/bar','/tmp/file/'));//输出/tmp/fileconsole.log(path.resolve('/foo/bar','/tmp/file'));//输出/tmp/fileconsole.log(path.resolve('www','js/upload','../mod.js'));//总结一下,有。或./或``将连接到上一个//输出/Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path/www/js/mod.js//path.format/*根据接口的描述,下面两个是等价的rootvsdir:两者可以互相替换,不同的是路径拼接的时候,后面不会自动加上/根,但目录会。basevsname+ext:两者可以互相替代。*/varp1=path.format({root:'/tmp/',base:'hello.js'});控制台日志(p1);//输出/tmp/hello.jsvarp2=path.format({dir:'/tmp',name:'hello',ext:'.js'});控制台日志(p2);//输出/tmp/hello.js//path.parse(filepath)是路径。format(pathObject)的逆向操作,直接看官网的例子。path.parse('/home/user/dir/file.txt')//返回//{//root:"/",//dir:"/home/user/dir",//base:"file.txt",//ext:".txt",//name:"file"//}//path.relative(from,to)//获取相对路径varp1=path.relative('/data/orandea/test/aaa','/data/orandea/impl/bbb');控制台日志(p1);//输出"../../impl/bbb"varp2=path.relative('/data/demo','/data/demo');控制台日志(p2);//输出""varp3=path.relative('/data/demo','');控制台日志(p3);//输出"../../Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path"console.log(process.env.PATH)//'C:\Windows\system32;C:Windows;C:ProgramFilesnode'process.env.PATH.split(path.delimiter)//返回['C:\Windows\system32','C:\Windows','C:\程序文件\节点\']
