Node.js中的路径
来源:互联网 发布:怎么做钓鱼软件 编辑:程序博客网 时间:2024/04/30 11:56
目录
- 目录
- 简介
- 例子
- 目录结构
- 主要代码
- 执行结果
- 具体说明
- processcwd
- processexecPath
- __filename
- __dirname
- fsreadFilepath
- requirepath
简介
在node.js中会在这么几种情况下跟路径打交道:
- process.cwd()
- process.execPath
- __fileName
- __dirname
- fs.readFile(path)
- require
下面我们就来一一说明
例子
目录结构
假设我们有这样一个目录结构:
主要代码
pathTest.js的内容如下:
function show(){ var fs = require("fs"); var data = require("./data.json"); console.log("process.cwd():"); console.log(process.cwd()); console.log(""); console.log("process.execPath:"); console.log(process.execPath); console.log(""); console.log("__fileName:"); console.log(__filename); console.log(""); console.log("__dirname:"); console.log(__dirname); console.log(""); console.log(""); console.log("data.name:"); console.log(data.name); try{ console.log("file:"); var content = fs.readFileSync("./main/file"); console.log(content); } catch(e){ console.log("cannot read file: ./main/file"); }}show();console.log("");console.log("process.chdir('main')");console.log("");process.chdir("main")show();console.log("");console.log("process.chdir('..')");console.log("");process.chdir("..")show();
其他的json文件或者file就随便写点内容好了。
执行结果
通过命令行进入到/Users/jiangqifan/jstest目录,执行main/pathTest.js, 就像这样:
jiangqifandeMBP:jstest jiangqifan$ node main/pathTest.js
输出为:
process.cwd():/Users/jiangqifan/jstestprocess.execPath:/usr/local/bin/node__fileName:/Users/jiangqifan/jstest/main/pathTest.js__dirname:/Users/jiangqifan/jstest/maindata.name:jqffile:<Buffer 68 65 6c 6c 6f 57 6f 72 6c 64 2e>process.chdir('main')process.cwd():/Users/jiangqifan/jstest/mainprocess.execPath:/usr/local/bin/node__fileName:/Users/jiangqifan/jstest/main/pathTest.js__dirname:/Users/jiangqifan/jstest/maindata.name:jqffile:cannot read file: ./main/fileprocess.chdir('..')process.cwd():/Users/jiangqifan/jstestprocess.execPath:/usr/local/bin/node__fileName:/Users/jiangqifan/jstest/main/pathTest.js__dirname:/Users/jiangqifan/jstest/maindata.name:jqffile:<Buffer 68 65 6c 6c 6f 57 6f 72 6c 64 2e>
具体说明
相信聪明如你,看了上面的栗子之后就已经清楚每一种用法的情况了,不过我们还是在下面整理一下。
process.cwd()
这个方法返回的是当前进程的的当前工作目录
比如你在/Users/jiangqifan/jstest
目录执行的node
命令,那么返回的就是/Users/jiangqifan/jstest
。
通过你可以使用process.chdir(dir)
来调整process.cwd()的值。基本上就可以相当于cd
命令来理解。
process.execPath
启动当前进程的地址,就是你的node的可执行程序的地址啦。比如/usr/local/bin/node
。
__filename
这是有node提供的global对象,表示当前文件的路径。就像上面的栗子中的/Users/jiangqifan/jstest/main/pathTest.js
。
__dirname
这也是node提供的global对象,表示当前文件的目录。就像上面栗子中的/Users/jiangqifan/jstest/main
。
__filename和__dirname跟你在什么目录执行node命令跟关系,只跟当前js文件的路径有关。
fs.readFile(path)
在使用fs.readFile
或者fs.readFileSync
来读去文件的时候,如果path是绝对路径,当然没什么好说的,如果是相对路径呢,就是相对于process.cwd()
。
所以在上面的栗子中,我们通过process.chdir
改变了进程的当前工作目录之后,就会发现原来能找到的文件找不到了。
而且需要注意的是,由于process.cwd()
跟你执行node命令的路径有关。所以可能本来跑得好好的程序,后来由于懒得cd到工程目录中去,直接在外面执行就发现程序出错了。
require(path)
require使用相对路径来加载模块时,这个路径是相对于__filename,跟着当前js文件走的。
- Node.js中的路径
- node.js 学习路径
- Node.js路径
- node.js 获取http url路径中的各个参数
- node.js 获取http url路径中的各个参数
- node中的路径解析
- node.js原始路径配置
- Node.js中的IOCP
- node.js中的require
- Node.js中的模块
- node.js中的models
- Node.js 中的copy
- node.js中的控制台
- Node,js 中的Promise
- Node.js 中的模块
- Node.js中的模块
- node.js中的文件系统
- node.js中的exports
- 创建一个简单的quicjstart maven项目
- cf #311 D. Vitaly and Cycle (二分图染色)
- JAVA中获取项目文件路径
- MySql查询语句总结
- POJ 1860 Currency Exchange 解题思路
- Node.js中的路径
- javaweb学习总结(七)——HttpServletResponse对象(一)
- eclipse高效编程(一)
- 装饰设计模式(三)demo
- android测试讲解网址
- A - 这是在网吧出的题!!
- 【Unix/Linux编程实践】 动手实现简单的more
- 使用yum源安装CDH Hadoop集群
- poj 2516 Minimum Cost KM算法