js已知文件路径得到file对象_NodeJs 的几种文件路径
Node 中的文件路径大概有 __dirname, __filename, process.cwd(), ./ 或者 ../,前三个都是绝对路径,为了便于比较,./ 和 ../ 我们通过 path.resolve('./')来转换为绝对路径。
详细内容的链接:请打开
先看一个简单的栗子:
假如我们在桌面上有这样的文件结构:
app/-lib/-common.js-model-task.js-test.js
在 task.js 里编写如下的代码:
var path = require('path');console.log(__dirname);
console.log(__filename);
console.log(process.cwd());
console.log(path.resolve('./'));
在 model 目录下运行 node task.js 得到的输出是:
$ node task.js
C:UsersjiantingDesktopappmodel
C:UsersjiantingDesktopappmodeltask.js
C:UsersjiantingDesktopappmodel
C:UsersjiantingDesktopappmodel
然后在 app 目录下运行 node model/task.js,得到的输出是:
$ node model/task.js
C:UsersjiantingDesktopappmodel
C:UsersjiantingDesktopappmodeltask.js
C:UsersjiantingDesktopapp
C:UsersjiantingDesktopapp
另一种常用的resolve拼接地址的情况,在 test.js 里编写如下的代码:
var path = require('path');console.log(path.resolve(__dirname, 'lib/common.js'));
console.log(path.resolve(__dirname, '/lib/common.js'));
console.log(path.resolve(__dirname, './lib/common.js'));
console.log(path.resolve(__dirname, '../lib/common.js'));
在 model 目录下运行 node test.js 得到的输出是:
$ node test.js
C:UsersjiantingDesktopappmodellibcommon.js
C:libcommon.js
C:UsersjiantingDesktopappmodellibcommon.js
C:UsersjiantingDesktopapplibcommon.js
那么,我们可以得出一些肤浅的结论了:
1、__dirname: 总是返回被执行的 js 所在文件夹的绝对路径2、__filename: 总是返回被执行的 js 的绝对路径3、process.cwd(): 总是返回运行 node 命令时所在的文件夹的绝对路径
关于 . / 和 . ./ 正确的结论是:
在 require()
中使用是跟 __dirname
的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟 process.cwd()
效果相同,是相对于启动脚本所在目录的路径。
只有在 require()
时才使用相对路径(./, ../) 的写法,其他地方一律使用绝对路径,如下:
// 当前目录下
path.dirname(__filename) + '/test.js';// path.dirname:返回路径的所在的文件夹名称
// 相邻目录下
path.resolve(__dirname, '../lib/common.js');// path.resolve:相当于不断的调用系统的cd命令
path.join()和path.resolve()区别:
1、path.join
path.join():方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
例如:path.join('foo', 'baz', 'bar'); // 返回 'foo/baz/bar'
注:如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。
2、path.resolve
path.resolve:方法会把一个路径或路径片段的序列解析为一个绝对路径。
例如:
注: 当前工作目录为 /home/myself/node
1、path.resolve('/foo/bar', './baz');// 返回: '/foo/bar/baz'
2、path.resolve('/foo/bar', '/tmp/file/');// 返回: '/tmp/file'
3、path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
- 两者区别:
1、join是把各个path片段连接在一起, resolve把‘/’当成根目录
path.join('/a', '/b') // Outputs '/a/b'
path.resolve('/a', '/b') // Outputs '/b'
2、join直接拼接字段,resolve解析路径并返回
path.join("a", "b1", "..", "b2")
console打印会得到"a/b2"
path.resolve("a", "b1", "..", "b2")
console打印得到"/home/myself/node/a/b2"
详细内容的链接:请打开
js已知文件路径得到file对象_NodeJs 的几种文件路径相关推荐
- js 已知角度和斜边,求直角边
//已知角度和斜边,求直角边 function hypotenuse(long,angle){//获得弧度var radian = 2*Math.PI/360*angle;return {a:Math ...
- js已知斜率和一点求方程
要求解一条直线的方程,我们需要知道直线的斜率和一点.对于JavaScript来说,我们可以使用以下公式来计算: y - y1 = m(x - x1) 其中,m是直线的斜率,(x1, y1)是直线上已知 ...
- nodejs 当前文件路径_NodeJs的几种文件路径
上次写删除文件夹的时候用到了fs模块,也集中用到了很多种路径,当时就想写一下,在Node中使用各种路径的问题,于是就简单写了一下,可以从 这里 获取demo源代码. 刚写Node的时候经常会遇到这种情 ...
- 重复文件查找_Duplicate File Remover PRO for mac(Mac文件重复查找软件)
Duplicate File Remover PRO for mac是一款mac上的mac文件重复查找软件,Duplicate File Remover PRO for mac能将您的文件根据种类分为 ...
- include virtual引入html文件,ASP文件引用include file和include virtual两种用法
在 ASP 编程中,我们经常遇到需要重复使用的模块代码,通常我们将这些模块代码保存为一个单独的文件,需要使用此模块代码时,在程序中通过 #include 指令引用此文件,这样使得工作效率和程序可读性大 ...
- 【JS】前端base64转图片File对象
码 base64ToFile.js /** * base64转图片File * @param {String} base64 图片base64 * @param {String} fileName 图 ...
- ftp服务器文件名存在,有什么办法根据已知文件名来检测FTP服务器上是否存在该文件? 急...
蛊毒传说 我不敢说 _________________ using System;using System.Collections.Generic;using System.Linq;using Sy ...
- 高德地图JS - 已知经纬度来获取街道、城市、详细地址等信息
1.时候偶现你得引入谷歌API|JS var geoCoder = new AMap.Geocoder({city: ""//城市,默认:"全国" }); va ...
- js已知正弦余弦正切值求角度弧度
弧度 Math.asin(value) Math.acos(value) Math.atan(value) 角度 Math.asin(value) / Math.PI * 180 Math.acos( ...
最新文章
- 说说标准服务器架构(WWW+Image/CSS/JS+File+DB)
- 关于“System.Data.ProviderIncompatibleException”类型的异常
- 常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全
- 【转】每天一个linux命令(53):route命令
- Python 中的模块简介及应用
- Longest Increasing Subsequence(LIS入门dp)
- php入门篇-------PHPCMS 入口文件,自动加载系统函数和URL规则
- P2831 [NOIP2016 提高组] 愤怒的小鸟 状压dp
- akka应用_处理Akka应用程序中的每个事件
- 教师节|祝所有可爱的讲师节日快乐!
- Linear Programming and network flows P17 笔记
- NRF24L01无线通信模块
- Python爬取小说网站页面制作电子书
- 今天又是一个全新的开始...
- mp3中不可缺少的音乐
- JSTL 标签大全详解
- 除了谷歌,这些互联网公司的办公室设计也十分酷炫
- Google: Sophisticated APT Group Burned 11 Zero-Days in Mass Spying Operation
- 宝塔提示PHP7.3等版本无zip扩展解决
- 大多数企业数字化转型的真正目的其实只是为了能多裁点人